如何编写容器监听器
原文: https://docs.oracle.com/javase/tutorial/uiswing/events/containerlistener.html
在将容器添加到容器或从容器中移除组件之后,容器事件由Container
触发。这些事件仅用于通知 - 无需成功添加或删除组件的容器监听器。
以下示例演示容器事件。通过单击添加按钮或删除按钮,您可以在窗口底部的面板中添加或删除按钮。每次向面板添加或从面板中删除按钮时,面板都会触发容器事件,并通知面板的容器监听器。监听器在窗口顶部的文本区域中显示描述性消息。
Try this:
单击“启动”按钮以使用 Java™Web Start (下载 JDK 7 或更高版本)运行 ContainerEventDemo。或者,要自己编译并运行示例,请参考示例索引。
单击标有添加按钮的按钮。 您会在窗口底部看到一个按钮。容器监听器通过在窗口顶部显示“JButton#1 已添加到 javax.swing.JPanel”来响应生成的组件添加事件。
- 单击标有的按钮删除按钮。 这将从面板中删除最近添加的按钮,从而使容器监听器接收组件删除的事件。
您可以在 ContainerEventDemo.java
中找到演示代码。这是 demo 的容器事件处理代码:
public class ContainerEventDemo ... implements ContainerListener ... {
...//where initialization occurs:
buttonPanel = new JPanel(new GridLayout(1,1));
buttonPanel.addContainerListener(this);
...
public void componentAdded(ContainerEvent e) {
displayMessage(" added to ", e);
}
public void componentRemoved(ContainerEvent e) {
displayMessage(" removed from ", e);
}
void displayMessage(String action, ContainerEvent e) {
display.append(((JButton)e.getChild()).getText()
+ " was"
+ action
+ e.getContainer().getClass().getName()
+ newline);
}
...
}
相应的适配器类是 ContainerAdapter
。
方法 | 目的 |
---|---|
componentAdded(ContainerEvent) | 在将组件添加到侦听容器之后调用。 |
componentRemoved(ContainerEvent) | 在从侦听容器中删除组件之后调用。 |
方法 | 目的 |
---|---|
组件 getChild() | 返回添加或删除触发此事件的组件。 |
Container getContainer() | 返回触发此事件的容器。您可以使用它而不是getSource 方法。 |
使用容器监听器的示例
下表列出了使用容器监听器的示例。
例 | 在哪里描述 | 笔记 |
---|---|---|
ContainerEventDemo |
这个部分 | 报告在单个面板上发生的所有容器事件,以演示触发容器事件的环境。 |