我在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