为了捕获全局级别的窗口事件,我正在做
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()
未返回内部框架窗口。
AWTEvent.WINDOW_STATE_EVENT_MASK
缩小事件范围时,我没有收到任何事件。我对Window开幕式和闭幕式特别感兴趣。 如何实现这一目标? 答案 0 :(得分:1)
对于JInternalFrame
打开和关闭,不会推送WindowEvent
,因为它不是Window
个孩子。使用AWTEvent.CONTAINER_EVENT_MASK
中的AWTEventListener
参数,您将收到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);