我找到了一个排序 JList 的示例,但我的应用程序由嵌入式 H2 数据库提供支持,所以我想知道是否有更好的方法来实现这一点。特别是考虑到有问题的表可能会变得非常大,并且在 JList 的列表模型中复制所有这些数据似乎有点违背了拥有数据库来管理它的意义。
有没有好的方法来做到这一点?还是我被迫拼凑一些笨拙的技巧以允许 JList “滚动”通过动态查询的数据块或其他东西?
您JList
的 'sListModel
负责将支持数据公开为有序列表。ListModel
的方法将被JList
UI(AWT 事件)线程调用,因此它的性能需要相当不错。这就是为什么大多数实现ListModel
在内存中都有 ' 的支持数据。我想你可以ListModel
用你的数据库作为支持数据来实现。您很可能会扩展AbstractListModel
以获取侦听器注册,并实现getElementAt(int)
和getSize()
. getElementAt
然后将负责获取特定索引的对象。请记住,这JList
将调用getElementAt
多次针对不同的索引,因此您可能会发现自己正在缓存结果。根据您缓存的数据量,您可能只从数据库中检索整个数据集。