【发布时间】:2014-02-05 23:02:23
【问题描述】:
我正在使用 TableView 来可视化由 ObservableList 备份的 SortedList。
SortedList 的比较器绑定到 TableView 的比较器:
sortedList().comparatorProperty().bind(tableView.comparatorProperty());
当我将项目添加到底层 ObservableList 时,SortedList 会按预期排序(通过所选 TableView 的比较器)。
虽然当我更改 ObservableList 的属性(使用 CheckBoxTableCell,但这不重要)时,SortedList 不会再次排序。
这应该有效还是我必须找到解决方法?
我正在使用 jdk 8 b121。
【问题讨论】:
-
"TableView 的比较器绑定到 SortedList 的比较器" => 不相反。您使用排序列表是否有原因?我希望表视图的排序在项目列表发生变异(添加/删除)时“刷新”,但在项目本身发生变异时不会。因此,您可能需要在复选框上添加一个侦听器并以编程方式重新排序表格。
-
我使用 SortedList 主要是因为它是新的并且认为它会更有效的排序。但是 SortedList 不能手动排序(可能有一种解决方法),所以我切换到显示 ObservableList 并且它可以工作(我必须在每次更改时调用 FXCollections.sort())
-
其实我还得为.compareTo()函数手动获取TableView的Comparator,但是现在可以了!
-
@LukasLeitinger 你应该在你的解决方案中添加一个答案并接受它
标签: java javafx javafx-8 java-8 sortedlist