这些Java教程是针对JDK 8编写的。本页描述的示例和实践不利用后续版本中引入的改进,可能使用不再可用的技术。
请参阅Java语言更改,了解Java SE 9及其后续版本中更新的语言功能的概述。
请参阅JDK发行说明,了解所有JDK版本的新功能、增强功能和已删除或不推荐的选项的信息。
InternalFrameListener
类似于WindowListener
。与窗口监听器一样,内部帧监听器监听“窗口”首次显示、销毁、图标化、取消图标化、激活或取消激活时发生的事件。在使用内部帧监听器之前,请熟悉如何编写窗口监听器中的WindowListener
接口。
下图中显示的应用程序演示了内部帧事件。该应用程序从事件生成器框架监听内部帧事件,并显示描述每个事件的消息。
下面是内部帧事件处理代码:
public class InternalFrameEventDemo ... implements InternalFrameListener ... { ... // 内部窗体关闭时触发 public void internalFrameClosing(InternalFrameEvent e) { displayMessage("内部窗体关闭", e); } // 内部窗体关闭后触发 public void internalFrameClosed(InternalFrameEvent e) { displayMessage("内部窗体已关闭", e); listenedToWindow = null; } // 内部窗体打开时触发 public void internalFrameOpened(InternalFrameEvent e) { displayMessage("内部窗体已打开", e); } // 内部窗体最小化时触发 public void internalFrameIconified(InternalFrameEvent e) { displayMessage("内部窗体最小化", e); } // 内部窗体取消最小化时触发 public void internalFrameDeiconified(InternalFrameEvent e) { displayMessage("内部窗体取消最小化", e); } // 内部窗体被激活时触发 public void internalFrameActivated(InternalFrameEvent e) { displayMessage("内部窗体被激活", e); } // 内部窗体失去焦点时触发 public void internalFrameDeactivated(InternalFrameEvent e) { displayMessage("内部窗体失去焦点", e); } // 显示消息 void displayMessage(String prefix, InternalFrameEvent e) { String s = prefix + ": " + e.getSource(); display.append(s + newline); } // 监听按钮点击事件 public void actionPerformed(ActionEvent e) { if (SHOW.equals(e.getActionCommand())) { ... if (listenedToWindow == null) { listenedToWindow = new JInternalFrame("事件生成器", true, //可调整大小 true, //可关闭 true, //可最大化 true); //可图标化 // 我们希望重用内部窗体,所以当用户关闭时,我们需要隐藏它 listenedToWindow.setDefaultCloseOperation( WindowConstants.HIDE_ON_CLOSE); listenedToWindow.addInternalFrameListener(this); ... } } ... } }
对应的适配器类为InternalFrameAdapter
。
方法 | 目的 |
---|---|
internalFrameOpened(InternalFrameEvent) | 在监听的内部窗口首次显示后调用。 |
internalFrameClosing(InternalFrameEvent) | 响应用户请求关闭监听的内部窗口时调用。默认情况下,JInternalFrame 在用户关闭窗口时隐藏窗口。您可以使用JInternalFrame 的setDefaultCloseOperation 方法指定另一种选项,该选项必须是DISPOSE_ON_CLOSE 或DO_NOTHING_ON_CLOSE (都定义在WindowConstants 中,JInternalFrame 实现了该接口)。或者通过在内部窗口的监听器中实现internalFrameClosing 方法,可以添加自定义行为(如弹出对话框或保存数据)以响应内部窗口的关闭。 |
internalFrameClosed(InternalFrameEvent) | 在监听的内部窗口被释放后调用。 |
internalFrameIconified(InternalFrameEvent) internalFrameDeiconified(InternalFrameEvent) |
在监听的内部窗口被最小化或取消最小化后调用。 |
internalFrameActivated(InternalFrameEvent) internalFrameDeactivated(InternalFrameEvent) |
在监听的内部窗口被激活或取消激活后调用。 |
每个内部框架事件方法都有一个参数:一个InternalFrameEvent
对象。 InternalFrameEvent
类没有定义通用的方法。 要获取触发事件的内部框架,请使用getSource
方法,该方法从java.util.EventObject
继承。
当前没有其他源文件包含内部框架监听器。 但是,内部框架监听器与WindowListener
非常相似,并且有几个Swing程序具有窗口监听器:
示例 | 描述位置 | 注释 |
---|---|---|
InternalFrameEventDemo |
本节 | 报告在一个内部框架上发生的所有内部框架事件,以演示触发内部框架事件的情况。 |
DialogDemo |
文本组件特性 | CustomDialog.java 使用setDefaultCloseOperation 而不是窗口监听器来确定用户关闭窗口时要采取的操作。 |
SliderDemo |
使用滑块 | 监听窗口图标化和取消图标化事件,以便在窗口不可见时停止动画。 |