当您滚动时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's CharmListView
,它自己处理鼠标单击事件,但(直到现在)不像标准那样方便使用ListView
,例如当您需要访问时SelectionModel
,正如您在这个问题中看到的那样: CharmListView SelectedItemProperty?