我开发了一个小型Javafx应用程序并部署在我的Android设备中,我有一个ListView
配置如下:
stuboutList.setOnMouseClicked(new EventHandler<MouseEvent>(){
@Override
public void handle(MouseEvent event) {
Dialog.show("You click the ListView!");
}
});
以下是问题所在:每次滚动ListView
时,对话框都会继续弹出。
问题:如何在滚动时停用 setOnMouseClicked
答案 0 :(得分:1)
滚动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();
}
}
另一种可能性是你使用Gluon的CharmListView
,它自己处理鼠标点击事件,但是(直到现在)并不像标准ListView
那样方便使用,例如当您需要访问SelectionModel
时,您可以在此问题中看到:CharmListView SelectedItemProperty?