繁体   English   中英

使用AWTEvent.WINDOW_EVENT_MASK捕获窗口事件

[英]Capturing window events using AWTEvent.WINDOW_EVENT_MASK

为了捕获全局级别的窗口事件,我正在做

    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()不会返回内部框架窗口。

  1. 如何在全局级别上从InternalFrame窗口捕获事件(打开和关闭)?
  2. 当我尝试使用AWTEvent.WINDOW_STATE_EVENT_MASK缩小事件范围时,我没有收到任何事件。 我对Window打开和关闭事件特别感兴趣。 我该如何实现?

对于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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM