MouseEvent.Moved,按下鼠标按钮时检测停止工作
MouseEvent.Moved, detection stops working when mouse button is being pressed
我有一个在 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);
好吧,我找到了它不起作用的原因。 MouseEvent 实际上是在跟踪鼠标的对象上激活的。因此,当我单击鼠标时,它会在该对象上创建一个拖动事件,直到我释放鼠标按钮才会结束,感谢您的帮助:)
编辑:我仍然不明白为什么它从一开始就不起作用。 eventHandler 方法是否应该在冒泡时捕获事件?
我有一个在 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);
好吧,我找到了它不起作用的原因。 MouseEvent 实际上是在跟踪鼠标的对象上激活的。因此,当我单击鼠标时,它会在该对象上创建一个拖动事件,直到我释放鼠标按钮才会结束,感谢您的帮助:)
编辑:我仍然不明白为什么它从一开始就不起作用。 eventHandler 方法是否应该在冒泡时捕获事件?