[英]How to disable setOnMouseClicked while scrolling in JavaFX ListView
我开发了一个小型Javafx应用程序并将其部署在我的Android设备中,我有一个ListView
,其配置如下:
stuboutList.setOnMouseClicked(new EventHandler<MouseEvent>(){
@Override
public void handle(MouseEvent event) {
Dialog.show("You click the ListView!");
}
});
这是问题所在:每次我滚动ListView
, 对话框都会不断弹出。
问题:如何在滚动时禁用setOnMouseClicked ?
滚动ListView
,滑动手势会触发鼠标拖动事件。 您可以在检测到拖动事件时设置一个标志,并使用以下鼠标单击事件。
public class ScrollListener {
private BooleanProperty scrolling;
public ScrollListener(Node observableNode) {
scrolling = new ReadOnlyBooleanWrapper(false);
observableNode.addEventHandler(MouseEvent.DRAG_DETECTED, e -> scrolling.set(true));
observableNode.addEventFilter(MouseEvent.MOUSE_CLICKED, evt -> {
if (scrolling.get()) {
scrolling.set(false);
evt.consume();
}
});
observableNode.addEventHandler(MouseEvent.MOUSE_EXITED, e -> scrolling.set(false));
}
public ReadOnlyBooleanProperty scrollingProperty() {
return scrolling;
}
public boolean isScrolling() {
return scrolling.get();
}
}
另一个可能性是您使用CharmListView
的CharmListView
,它自己负责处理Mouse Click Event,但是(直到现在)不如标准ListView
那样方便使用,例如,当您需要访问SelectionModel
,如您所见在这个问题: CharmListView SelectedItemProperty?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.