我有一個程序可以在 javafx 中使用 MouseEvent.MOVED 跟蹤鼠標,每當我按住鼠標按鈕時,跟蹤就會停止。我試圖將事件從 addEventFilter 切換到 addEventHandler。添加另一個事件,MouseEvent.DRAGED。但在我禁用 MouseEvent.Moved 中的代碼之前,它甚至不會注冊事件。我試圖將這些結合起來,但似乎沒有任何效果。非常感謝您的幫助。EventHandler<MouseEvent> tracking = new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent e){ double x = e.getSceneX(); double y = e.getSceneY(); if((x + size < 400) && (y - circle.getRadius() > 1)){ switch (value){ case 0 : circle.setCenterX(x); circle.setCenterY(y); break; case 1 : rec.setLayoutX(x); rec.setLayoutY(y); break; case 2 : pol.getPoints().clear(); pol.getPoints().addAll(new Double[]{x - size, y, x + size, y, x, y + size}); break; } } } }; EventHandler<MouseEvent> test = new EventHandler<MouseEvent>() { @Override public void handle(MouseEvent e){ System.out.print("test: "); } }; pane1.addEventHandler(MouseEvent.MOUSE_MOVED, tracking);pane1.addEventFilter(MouseEvent.MOUSE_DRAGGED, test);
1 回答

MYYA
TA貢獻1868條經驗 獲得超4個贊
好吧,我找到了為什么它不起作用。MouseEvent 實際上是在跟蹤鼠標的對象上激活的。因此,當我單擊鼠標時,它會在該對象上創(chuàng)建一個拖動事件,直到我釋放鼠標按鈕才會結束,感謝您的幫助:)
編輯:我仍然不明白為什么它從一開始就不起作用。eventHandler 方法是否應該在事件冒泡時捕獲事件?
添加回答
舉報
0/150
提交
取消