簡體   English   中英

Java swing:哪個組件處理鼠標事件以調整 JFrame 或 JDialog

[英]Java swing: which component handles the mouse event to resize a JFrame or JDialog

Java 8 上 windows 10. 我有一個可調整大小的 JDialog。 我嘗試了以下代碼,看看當鼠標 cursor 在 JDialog 的邊緣改變形狀並准備按下和拖動以調整 JDialog 的大小時,我是否可以捕獲 mousePressed 和 mouseReleased 事件,

Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() {

                @Override
                public void eventDispatched(AWTEvent event) {
                    if (event instanceof MouseEvent) {
                        MouseEvent me = (MouseEvent)event;
                        System.out.println("mouse event captured");
                    }
                },  AWTEvent.MOUSE_EVENT_MASK);

但是上面的代碼在按下/拖動/釋放鼠標駐留JDialog的過程中無法捕獲任何鼠標事件。 但是,如果鼠標指針位於 JDialog 的邊界內,它可以捕獲所有鼠標事件。

在使用鼠標調整 JDialog 大小的過程中,如何捕獲 mousePressed/mouseDragged/mouseReleased 事件?

看起來你想在 JFrame/JDialog 調整大小時執行代碼,然后只是 JFrame/JDialog.addComponentListener 方法。 當 window 正在調整大小時,將調用 componentResized。

如果您想區分使用代碼更改大小或通過拖動更改大小,只需使用 boolean:

resizingByCode = true;
resize();
resizingByCode = false;

並在 componentResized 檢查這個 boolean。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM