簡體   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