3
我有一個SelectionMode.MULTIPLE實現代碼如下:如何在JavaFX tableview中取消選擇行?
table.setEditable(true);
table.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
table.getSelectionModel().selectedItemProperty().addListener(
(observable, oldValue, newValue) -> {
table.getSelectionModel().getSelectedItems().forEach(System.out::println);
});
選擇行工作FINDE,但如果取消再行(通過按Ctrl +左鍵點擊)聽者不會立即作出反應了這一點。我必須做的,取消一排如下:
- 選擇讓說「搶」,「彼得」,「最大」和「約翰」(通過使用Ctrl individualy選擇它們+左按shift +左鍵點擊)
- 取消選擇單擊或全部一起「彼得」通過按Ctrl +左鍵點擊(現在這行有一個奇怪的藍色邊框,並沒有檢測到聽者的變化)
- 取消選擇另一行(現在這個行有這個奇怪的邊框,'Peter'是行看起來很正常的)
- 重新選擇前面的小號行(現在的偵聽器檢測到,我不勾選「彼得」)
我紛紛轉載我的系統上也是如此。這是一個錯誤。請在此登錄:https://javafx-jira.kenai.com。 如果你想讓我爲你登錄,只需告訴我。 – Boomah 2014-10-06 08:56:50
我不認爲這是一個錯誤。給我時間做一些測試,我會檢查,但通常對於多重選擇,您應該向所選項目的**列表**而不是單個選定項目(這是最後一個選定項目)註冊一個監聽器。 – 2014-10-06 10:43:27
@James_D是對的。我必須將列表添加到整個列表中。下面的代碼可以工作,所以如果jamed_d想要,他可以將其作爲答案發布。 ().getSelectedModel()。getSelectedItems()。addListener((ListChangeListener.Change <?extends Person> c) - > { } table.getSelectionModel()。getSelectedItems()。forEach(System。::出來的println); }); 我不知道有一種方法'getSelectedItem ** s **',但奇怪的是沒有任何屬性,就像單個項目'selectedItemProperty'一樣。 – haisi 2014-10-06 10:58:48