2
A
回答
2
只需過濾MOUSE_PRESSED事件,檢查輔助按鈕是否關閉,使用它並在需要時添加自定義處理代碼。
右鍵單擊也可以觸發OS X觸摸板上的一個ContextMenuEvent.CONTEXT_MENU_REQUESTED
事件(並且此類事件會有點奇怪地觸發選擇),因此也會篩選並使用這些事件。
這個工作對我來說:
public class ListViewSample extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("List View Sample");
ListView<String> list = new ListView<String>();
ObservableList<String> items =FXCollections.observableArrayList ("Single", "Double", "Suite", "Family App");
list.setItems(items);
// filter right mouse button
list.addEventFilter(MouseEvent.MOUSE_PRESSED, e ->
{
if(e.isSecondaryButtonDown()) {
e.consume();
}
});
list.addEventFilter(ContextMenuEvent.CONTEXT_MENU_REQUESTED, Event::consume);
// verify selection via logging
list.getSelectionModel().selectedItemProperty().addListener(
(ChangeListener<String>) (observable, oldValue, newValue) -> System.out.println("Item selected: " + observable + ", " + oldValue + ", " + newValue)
);
StackPane root = new StackPane();
root.getChildren().add(list);
primaryStage.setScene(new Scene(root, 200, 250));
primaryStage.show();
}
}
1
可能是這可以幫助
-Controller
@FXML
ListView<String> listT=new ListView<String>();
@FXML
Label lbl=new Label();
public void initialize(URL location, ResourceBundle resources) {
listT=new Listv(listT);
}
類擴展列表視圖
public class Listv extends ListView<String>{
ListView<String> llist=new ListView<String>();
int PrevIndex=0;
public Listv(ListView<String> l) {
this.llist=l;
llist.getItems().add("A");
llist.getItems().add("A");
llist.getItems().add("A");
llist.getItems().add("A");
this.llist.setOnMouseClicked(listclicked);
this.llist.getSelectionModel().selectedIndexProperty().addListener(indexChanged);
}
EventHandler<MouseEvent> listclicked=new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
if(event.getButton() == MouseButton.SECONDARY)
{
Platform.runLater(()->{
llist.getSelectionModel().select(PrevIndex);
});
}
}
};
ChangeListener<Object> indexChanged=new ChangeListener<Object>() {
@Override
public void changed(ObservableValue<? extends Object> observable,Object oldValue, Object newValue) {
PrevIndex=Integer.parseInt(oldValue.toString());
}
};
}
+0
與此問題是它首先選擇新的比前一個 – vinay 2015-02-28 06:21:59
相關問題
- 1. 可以通過單擊或左擊來選擇ListView項目嗎?
- 2. ListView rightclick選擇項目,左鍵單擊並不
- 3. ListView,通過雙擊選擇項目
- 4. 單擊/選擇更新ListView項目
- 5. ListView頁腳僅在選擇listview項目後纔可選擇
- 6. 如何僅通過單擊選擇選項來觸發單選按鈕
- 7. 使用戶左鍵點擊gridview的項目,但禁用右鍵單擊並選擇一個項目xaml
- 8. Win8 ListView點擊不選擇項目
- 9. 選擇ListView項目
- 10. 只允許通過在ListBox中單擊鼠標右鍵來選擇項目
- 11. 通過單擊數據網格選擇多個項目
- 12. WPF C#通過ListView選擇項循環
- 13. winrt在外部單擊時取消選擇ListView項目
- 14. 如何通過雙擊選擇選項?
- 15. 垂直滾動通過鍵盤選擇項目的一個ListView時滾動=假
- 16. Android Listview項目選擇
- 17. 無法選擇ListView項目
- 18. listView選擇多個項目
- 19. listview已選擇項目
- 20. 選擇Kendo UI ListView項目
- 21. JavaFX ListView項目選擇
- 22. 如何通過單擊從ListView獲取特定項目?
- 23. 如何通過單擊listView項目來刪除sharedPreference?
- 24. Javax:ListView:通過選擇ListView中的項目加載控制器
- 25. 通過選擇ListView中的項目來填充組合框
- 26. 檢測是否通過拖動選擇了多個ListView項目
- 27. 選擇ListView中的所有項目,通過命令(MVVM)
- 28. jquery mobile - 選擇,通過單擊「全部」選項取消選擇所有選擇菜單選項
- 29. 如何更改鼠標左鍵單擊和右鍵單擊選項?
- 30. Javascript - 通過選擇選項單擊每一個循環
我想你可以停止右點擊[設置事件fil ter](http://docs.oracle.com/javase/8/javafx/events-tutorial/filters.htm#BCFDCCEJ),它消耗了鼠標右鍵事件。但是,無選擇是由[ContextMenuEvent.CONTEXT_MENU_REQUESTED](http://docs.oracle.com/javase/8/javafx/api/javafx/scene/input/ContextMenuEvent.html#CONTEXT_MENU_REQUESTED)事件獨立觸發的,您可以過濾器,但該事件只有'event.isKeyboardTrigger()',所以不能過濾用於啓動事件的鼠標按鈕。 – jewelsea 2015-02-24 22:06:51
我不知道如何解決這個問題 - 也許是一個新的自定義ListView皮膚或行爲的實現。 – jewelsea 2015-02-24 22:09:42
我在發佈代碼後剛剛閱讀了您的評論。爲什麼它不工作,我。即我沒有看到什麼? – Roland 2015-02-28 06:06:16