[英]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.