【发布时间】:2013-02-07 18:26:39
【问题描述】:
我的程序中有一个 JTextField 和一个 JList。 JList 包含用户的联系人。我想根据 JTextField 上的文本过滤 JList。例如,如果我输入“Mike”,它只会显示包括“Mike”在内的联系人。当用户清除 JTextField 时,它会重置过滤器。
我知道我可以通过拥有两个数组来手动执行此操作。一个用于原始联系人,一个用于过滤后的联系人。当用户更改 JTextField 的值时,我会查看原始列表,更新临时列表并更新 JList。我只是想知道是否有一些内置功能可以避免体力劳动。
【问题讨论】:
-
在您的情况下,JList 是如何填充的?你使用自定义的 JListModel 吗?
-
我稍微编辑了原始帖子@AaronKurtzhals。 JList 是使用 Netbeans GUI 构建器创建的,目前“联系人”被硬编码在 GUI 的 JList 中。
-
基本上你需要一个代理列表模型。该模型将使用原始模型和过滤器值来确定哪些值将出现在代理模型中。代理模型将简单地维护一个索引引用返回到所有满足过滤器要求的值的原始模型
-
JXList([SwingX 项目](swingx.java.net) 的一部分)完全支持过滤/排序,与核心 JTable 的机制相同。此外,它还基本支持将 textField 的输入绑定到在 RowFilter 中使用的模式
-
@kleopatra 显然 JXList 上的过滤器在排序器上,方法 setRowFilter 作为参数(RowFilter 过滤器)
标签: java swing filter jtextfield jlist