第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 updateUiChanged() 事件之前捕獲

如何在 updateUiChanged() 事件之前捕獲

牛魔王的故事 2021-06-11 18:19:48
我的 Java Swing 應(yīng)用程序使用 updateUiChanged() 在用戶調(diào)整其 jFrame 大小后調(diào)整字體大小。但是當 jFrame 最小化然后最大化時會觸發(fā) updateUiChanged(),這會導(dǎo)致問題我試圖用以下方法捕獲最小化和最大化事件,但它們根本不執(zhí)行,或者它們在為時已晚的 updateUiChanged() 之后執(zhí)行。如何在 updateUiChanged() 之前捕獲最小化和最大化 請參閱下面的 updateUiChanged 實現(xiàn)。謝謝   private WindowListener wndMinMax;       wndMinMax = new WindowAdapter(){        public void windowIconified(WindowEvent e){            if(debug)debug("Window Iconfied!!");            return;        }        public void windowDeiconified(WindowEvent e){            if(debug)debug("Window DeIconfied!!");            return;        }    };    this.addWindowListener(wndMinMax);     addComponentListener(new ComponentAdapter()                         {                                                                       public void componentResized(ComponentEvent e) //V.43        {            if (e.getSource() instanceof JFrame) //V.43            {                updateUiChanged((int) e.getComponent().getWidth(),                        (int) e.getComponent().getHeight());                    }        }                                                               });
查看完整描述

1 回答

?
三國紛爭

TA貢獻1804條經(jīng)驗 獲得超7個贊

您可以使用EventQueue.invokeLater來確保您的 updateUiChanged 調(diào)用發(fā)生在 WindowEvent 之后。您可以在私有實例字段中跟蹤 WindowEvent 的發(fā)生,因此延遲的 ComponentListener 代碼可以知道調(diào)整大小是否與 WindowEvent 配對:


private boolean iconifyStateChanged;


// ...


wndMinMax = new WindowAdapter(){


    public void windowIconified(WindowEvent e){

        if(debug)debug("Window Iconfied!!");

        iconifyStateChanged = true;

    }

    public void windowDeiconified(WindowEvent e){

        if(debug)debug("Window DeIconfied!!");

        iconifyStateChanged = true;

    }

};

this.addWindowListener(wndMinMax); 


addComponentListener(new ComponentAdapter()                     

{                                                               

    public void componentResized(ComponentEvent e) //V.43

    {

        if (e.getSource() instanceof JFrame) //V.43

        {

            // This will run after any pending WindowEvents.

            EventQueue.invokeLater(() -> {

                if (!iconifyStateChanged)

                {

                    updateUiChanged(e.getComponent().getWidth(),

                                    e.getComponent().getHeight()));

                }

                iconifyStateChanged = false;

            });

        }

    }                                                           

});

(getWidth()和getHeight()已經(jīng)返回 int 值,因此不需要強制轉(zhuǎn)換為 int。)


查看完整回答
反對 回復(fù) 2021-06-23
  • 1 回答
  • 0 關(guān)注
  • 172 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號