为了捕获全局级别的窗口事件,我正在做
Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() {
@Override
public void eventDispatched(AWTEvent event) {
System.out.println(event);
System.out.println(Arrays.toString(Window.getWindows()));
}
}, AWTEvent.WINDOW_EVENT_MASK);
但是,当打开内部框架窗口时,我没有收到任何事件。此外,Window.getWindows()
不会返回内部框架窗口。
- 如何从全局级别的 InternalFrame 窗口捕获事件(打开和关闭)?
- 当我尝试使用
AWTEvent.WINDOW_STATE_EVENT_MASK
缩小事件范围时,我没有收到任何事件。我对窗口打开和关闭事件特别感兴趣。 我怎样才能实现这一目标?
最佳答案
对于 JInternalFrame
打开和关闭,不会推送 WindowEvent
,因为它不是 Window
子级。在 AWTEventListener
中使用 AWTEvent.CONTAINER_EVENT_MASK
参数,您将收到 ContainerEvent[COMPONENT_ADDED]
和 ContainerEvent[COMPONENT_REMOVED]
,分别用于添加和删除 JInternalFrames
:
Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() {
@Override
public void eventDispatched(AWTEvent event) {
System.out.println(event);
}
}, AWTEvent.CONTAINER_EVENT_MASK);
关于java - 使用 AWTEvent.WINDOW_EVENT_MASK 捕获窗口事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20945544/