JavaFX 对 ObservableCollections 进行排序并允许删除

问题描述 投票:0回答:1

看,我只想对 ListView 进行排序并允许添加/删除。 我在这方面不是最擅长的,但这似乎比应有的要困难得多。 如果重要的话,存储的数据只是一条记录,其中有一些文本要显示在 ListView 中,而其他一些文本在 ListView 中选择时会显示在单独的框中。

默认情况下,集合未排序且不允许删除。

我试过这个:

tables = FXCollections.observableArrayList();
SortedList<TableData> sortedTables = new SortedList<>(tables);
sortedTables.setComparator(TableData.getComparator());
tableList = new ListView<>(sortedTables);

我有

tables.remove(currentData);

抛出 java.lang.UnsupportedOperationException。

我尝试删除 SortedList,但没有帮助。

我以为 Observable 的 ArrayList 版本允许删除,但显然不允许。 我是不是在做蠢事? 也许我可以以某种方式使用 ObservableSet 或 ObservableMap,但我不明白为什么我所拥有的不起作用。

sorting javafx observablelist
1个回答
0
投票

基本上,问题在于

SortedList
超类
AbstractList
通过抛出
remove
来实现方法
UnsupportedOperationException
,而
FXCollections.observableArrayList()
返回的列表正确实现方法
remove
,即从列表中删除元素。

您只需要探索

SortedList
FXCollections
的类层次结构的源代码。

© www.soinside.com 2019 - 2024. All rights reserved.