2

我正在用 Java 编写一个通讯录应用程序。联系人显示在使用排序树集列表模型的 JList 上。

我添加了一个搜索字段,并为其添加了一个关键侦听器。输入每个键后,列表模型的子集函数用于显示缩小的联系人集。我希望 JList 显示这个缩小的子集。

我正在考虑将 SortedSet 转换为 Vector,然后使用 JList 的 setListData 方法来显示结果,但我知道这会很慢且效率低下,而且当您使用关键侦听器时,这是一个更糟糕的主意。

所以我想问一下,解决这个问题最有效的方法是什么。

谢谢你的帮助。

4

3 回答 3

5

我将直接扩展AbstractListModel和使用 Set/subSet 作为 JList 显示的数据源。每次用模型中的另一个子集替换当前子集时,调用fireContentsChanged以使视图(JList)知道更改。

这样,就无需将 Set 转换为 Vector。

于 2011-08-31T14:32:02.637 回答
0

如果您不需要并发,请不要使用 Vector 使用 ArrayList 它不会同步因此更快。

于 2011-08-31T14:28:21.100 回答
0

您将需要通过 ListModel 将您的数据(在任何集合中)绑定到您的列表。

请参阅Advanced JList Programming Tutorial中标题为具有动态内容的列表的部分。

于 2011-08-31T14:32:45.680 回答