[英]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.