我有一大组数据,用户必须从中选择一个。我正在考虑实现它的方法(当然,在GUI中)。我有一些想法。但只是想在这里张贴,因为可能有更好的选择..
假设,用户必须从大量用户群中选择一个名称。如果我只是为用户输入一个文本字段来输入名称,那么可能会出现输入不同格式的相同名称,拼写错误等问题......
我在这里看到两个选项
tool tip
这样的东西。因为我不能总是因为空间问题而显示整个列表)但我认为组合框不会对用户友好。由于用户必须滚动整个列表以选择条目。如果条目数太大,则为
这意味着,现在我只剩下一个选项了。弹出列表,将根据文本用户在文本字段中输入的内容更改内容。因此,他可以输入前几个字母,列表将显示从输入文本开始的所有条目。明白我的意思吧?
还有其他更好的方法来满足这种需求吗?
如果我要在上面实施,那么最好的方法是什么。我正在考虑扩展JTextField
以添加所需的功能。好吧,我会设置一些方法来设置弹出列表条目。我将添加一些actionListner
来观察文本字段,并相应地控制弹出列表...
答案 0 :(得分:4)
您可以查看SwingLab的autocomplete功能,它可以将其附加到JCombBox
,JList
或JTextComponent
答案 1 :(得分:4)
自动完成功能是您可能正在寻找的功能。谷歌针对“java swing jcombobox autocomplete”并限制了过去几年的结果,以获得相关结果。关于如何使用自定义代码实现此功能,将会有很多示例和想法。
我相信还有一些自定义库,比如“swingx”,它们提供至少部分或全部实现以节省时间。
他们最近在今年年初发布了代码,因此它看起来很活跃,可能会满足您的需求。
答案 2 :(得分:3)
使用AutoComplete JComboBox/JTextField
基于标准Java类
较大的数据集没有问题
Focus
,BackSpace Key
,Caret
为了更好的性能,需要在使用前对array
进行排序
setStrict(true/false)
的简单解决方法,将输入限制为array