我在JavaFX 8中有一個只讀TableView,我不希望用戶選擇行。
他們應該仍然能夠對列進行排序並滾動,而不是選擇任何行。
我該如何做到這一點?在TableView中禁用行選擇
回答
經過一段時間,我發現如何解決它,所以張貼在這裏爲未來的用戶。
該解決方案是基於這樣的回答: JavaFX8 - Remove highlighting of selected row
加入以下幾行,以你的CSS後,選擇線條看起來幾乎完全爲未選各線,實現了我在同一個地方想同樣的效果:
.table-row-cell:filled:selected {
-fx-background: -fx-control-inner-background ;
-fx-background-color: -fx-table-cell-border-color, -fx-background ;
-fx-background-insets: 0, 0 0 1 0 ;
-fx-table-cell-border-color: derive(-fx-color, 5%);
}
.table-row-cell:odd:filled:selected {
-fx-background: -fx-control-inner-background-alt ;
}
我剛剛碰到這個問題。我認爲解決它的最好方法是提供一個TableViewSelectionModel的null實現。
然後,你可以簡單地說tableView.setSelectionModel(new NullTableViewSelectionModel(tableView));
樣本null實現低於...
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TablePosition;
import javafx.scene.control.TableView;
public class NullTableViewSelectionModel extends TableView.TableViewSelectionModel {
public NullTableViewSelectionModel(TableView tableView) {
super(tableView);
}
@Override
public ObservableList<TablePosition> getSelectedCells() {
return FXCollections.emptyObservableList();
}
@Override
public void selectLeftCell() {
}
@Override
public void selectRightCell() {
}
@Override
public void selectAboveCell() {
}
@Override
public void selectBelowCell() {
}
@Override
public void clearSelection(int i, TableColumn tableColumn) {
}
@Override
public void clearAndSelect(int i, TableColumn tableColumn) {
}
@Override
public void select(int i, TableColumn tableColumn) {
}
@Override
public boolean isSelected(int i, TableColumn tableColumn) {
return false;
}
@Override
public ObservableList<Integer> getSelectedIndices() {
return FXCollections.emptyObservableList();
}
@Override
public ObservableList getSelectedItems() {
return FXCollections.emptyObservableList();
}
@Override
public void selectIndices(int i, int... ints) {
}
@Override
public void selectAll() {
}
@Override
public void clearAndSelect(int i) {
}
@Override
public void select(int i) {
}
@Override
public void select(Object o) {
}
@Override
public void clearSelection(int i) {
}
@Override
public void clearSelection() {
}
@Override
public boolean isSelected(int i) {
return false;
}
@Override
public boolean isEmpty() {
return false;
}
@Override
public void selectPrevious() {
}
@Override
public void selectNext() {
}
@Override
public void selectFirst() {
}
@Override
public void selectLast() {
}
}
'isEmpty()'應該返回真實的恕我直言。 – Mordechai 2017-09-13 16:01:46
我發現here對於同樣的問題,但對於一個ListView另一種解決方案。模式是:監聽選擇更改事件,然後清除選擇。它也適用於TableView。 代碼示例:
_tableView.getSelectionModel()
.selectedIndexProperty()
.addListener((observable, oldvalue, newValue) -> {
Platform.runLater(() -> {
_tableView.getSelectionModel().clearSelection();
});
});
您可以禁用選擇,通過設置selectionModel
到null
。
table.setSelectionModel(null);
這是不是在表中排序呢? – namlik 2016-05-19 06:54:57
排序工作正常。 – user3224416 2016-05-22 08:57:51
它與JavaFX 8的ListView引發我的任何方式來禁用選擇? – 2017-02-17 03:56:07
- 1. JavaFX tableview啓用和禁用行選擇
- 2. 在Swift中禁用Tableview中的多行選擇
- 3. IBAction在TableView中選擇行
- 4. 在tableview中選擇多行
- 5. Tableview選擇行
- 6. 顯示在NSLog中選擇的tableview行
- 7. 在tableview中選擇多行,並勾選選中的行
- 8. 禁用在datagridview中選擇行
- 9. 在現有jqgrid中禁用行選擇
- 10. 選擇在TableView中的JavaFX
- 11. datatables選擇 - 禁用幾行選擇
- 12. 選擇的tableview行編程
- 13. 的TableView行無法選擇
- 14. TableView行選擇問題
- 15. 在TreeView中禁用選擇
- 16. 在用戶選擇行後更改分段tableView中行的accessoryType
- 17. QT4 Qtableview禁用行選擇
- 18. NSTableView - 禁用行選擇
- 19. UIPickerView禁用行選擇
- 20. 啓用在選擇中禁用選項
- 21. 動態地從TableView中行選擇
- 22. 在選擇行後顯示tableview字幕
- 23. JavaFX:'禁用'TableView行和列
- 24. 在導航前強制用戶在tableview中選擇一行
- 25. Objective C/iOS:在tableView中選擇一行時處理選擇器調用。
- 26. 通過在tableview iPhone錯誤中選擇tableview行來添加動態子行?
- 27. JavaFX,禁用TableView中的完整行
- 28. 禁用行選擇只有幾行 - Primefaces
- 29. 如何在另一個選擇框中使用jquery在同一行中選擇其他選擇框時禁用
- 30. JTable中禁用列選擇
從技術上講,您可以null selectionModel - 可能會禁用導航,雖然(現在不能嘗試)。另外,複製也是不可能的。好奇:你爲什麼想要減少用戶體驗? – kleopatra 2014-12-08 11:28:18
@kleopatra將SelectionModel設置爲null將在用戶對列進行排序時引發異常。 – BioRoy 2014-12-09 12:54:11
有用的知識,感謝信息:-)聽起來像一個bug(null selectionModel是一個有效的值),所以提出了一個問題:https://javafx-jira.kenai.com/browse/RT-39624 – kleopatra 2014-12-09 14:14:32