使用一個EventHandler
任何MouseEvent
和過濾器點擊事件是否發生的拖累。例如:
public class MyHandler implements EventHandler<MouseEvent> {
private final EventHandler<MouseEvent> onDraggedEventHandler;
private final EventHandler<MouseEvent> onClickedEventHandler;
private boolean dragging = false;
public Handler(EventHandler<MouseEvent> onDraggedEventHandler, EventHandler<MouseEvent> onClickedEventHandler) {
this.onDraggedEventHandler = onDraggedEventHandler;
this.onClickedEventHandler = onClickedEventHandler;
}
@Override
public void handle(MouseEvent event) {
if (event.getEventType() == MouseEvent.MOUSE_PRESSED) {
dragging = false;
}
else if (event.getEventType() == MouseEvent.DRAG_DETECTED) {
dragging = true;
}
else if (event.getEventType() == MouseEvent.MOUSE_DRAGGED) {
//maybe filter on dragging (== true)
onDraggedEventHandler.handle(event);
}
else if (event.getEventType() == MouseEvent.MOUSE_CLICKED) {
if (!dragging) {
onClickedEventHandler.handle(event);
}
}
}
}
然後將其添加到按鈕:
button.addEventHandler(MouseEvent.ANY,
new MyHandler(
e -> System.out.println("Dragged"),
e -> System.out.println("Clicked"))
);
*錯字的線(即拖的時候,不叫點擊) – sandboxj
[編輯]你的問題解決了錯字。 –