スワイプ ジェスチャをスクロールする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
もう 1 つの可能性は、マウス クリック イベントを独自に処理する Gluon の を使用することですが、(今まで)ListView
にアクセスする必要がある場合SelectionModel
など、この質問でわかるように、標準として使用するのは便利ではありません。 : CharmListView SelectedItemProperty?