文档

Java™ 教程
隐藏目录
如何编写Container监听器
路径: 使用Swing创建GUI
课程:编写事件监听器
章节:实现常用事件的监听器

如何编写容器监听器

容器事件在组件被添加到容器或从容器中移除后由Container触发。这些事件仅用于通知,组件成功添加或移除无需存在容器监听器。

下面的示例演示了容器事件。通过点击添加按钮移除按钮,您可以向窗口底部的面板添加或移除按钮。每次按钮被添加到面板或从面板移除时,面板会触发一个容器事件,并通知面板的容器监听器。监听器会在窗口顶部的文本区域中显示描述性消息。

演示容器事件的截图

请尝试以下操作: 
  1. 点击“启动”按钮使用Java™ Web Start运行ContainerEventDemo(下载JDK 7或更高版本)。或者,要自己编译和运行示例,请参考示例索引启动ContainerEventDemo示例
  2. 点击标有添加按钮的按钮。
    您会看到一个按钮出现在窗口底部。容器监听器通过在窗口顶部显示“JButton #1已添加到javax.swing.JPanel”来响应生成的组件添加事件。
  3. 点击标有移除按钮的按钮。
    这将从面板中移除最近添加的按钮,导致容器监听器接收到一个组件移除事件。

您可以在这里找到演示代码的代码。下面是演示的容器事件处理代码:

public class ContainerEventDemo ... implements ContainerListener ... {
    ...//where initialization occurs:
        buttonPanel = new JPanel(new GridLayout(1,1));
        buttonPanel.addContainerListener(this);
    ...
    public void componentAdded(ContainerEvent e) {
        displayMessage("添加到", e);
    }

    public void componentRemoved(ContainerEvent e) {
        displayMessage("从", e);
    }

    void displayMessage(String action, ContainerEvent e) {
        display.append(((JButton)e.getChild()).getText()
                       + "被"
                       + action
                       + e.getContainer().getClass().getName()
                       + newline);
    }
    ...
}

容器监听器API

容器监听器接口

相应的适配器类是ContainerAdapter

方法 目的
componentAdded(ContainerEvent) 在组件添加到监听容器后调用。
componentRemoved(ContainerEvent) 在组件从监听容器中移除后调用。

容器事件类

方法 目的
Component getChild() 返回触发此事件的添加或移除的组件。
Container getContainer() 返回触发此事件的容器。您可以使用这个方法代替getSource方法。

使用容器监听器的示例

以下表格列出了使用容器监听器的示例。

示例 描述位置 备注
ContainerEventDemo 本节 报告在单个面板上发生的所有容器事件,以演示容器事件触发的情况。

上一页: 如何编写组件监听器
下一页: 如何编写文档监听器