0

小さな Javafx アプリケーションを開発し、Android デバイスにデプロイしましたListView。次のように構成されています。

stuboutList.setOnMouseClicked(new EventHandler<MouseEvent>(){
    @Override
    public void handle(MouseEvent event) {
        Dialog.show("You click the ListView!");
    }
});

問題は次のとおりです。ダイアログをスクロールするたびにListViewダイアログがポップし続けます。

質問:スクロール中にsetOnMouseClickedを無効にする方法は?

4

1 に答える 1

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();
    }
}

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

于 2016-04-25T12:02:19.207 に答える