从大量条目中实现选择框的最佳方法

时间:2012-08-12 05:19:31

标签: java swing tooltip jtextfield swingx

我有一大组数据,用户必须从中选择一个。我正在考虑实现它的方法(当然,在GUI中)。我有一些想法。但只是想在这里张贴,因为可能有更好的选择..

假设,用户必须从大量用户群中选择一个名称。如果我只是为用户输入一个文本字段来输入名称,那么可能会出现输入不同格式的相同名称,拼写错误等问题......

我在这里看到两个选项

  • 使用组合框
  • 使用一个列表(实际上我想的是像tool tip这样的东西。因为我不能总是因为空间问题而显示整个列表)

但我认为组合框不会对用户友好。由于用户必须滚动整个列表以选择条目。如果条目数太大,则为

这意味着,现在我只剩下一个选项了。弹出列表,将根据文本用户在文本字段中输入的内容更改内容。因此,他可以输入前几个字母,列表将显示从输入文本开始的所有条目。明白我的意思吧?

还有其他更好的方法来满足这种需求吗?

如果我要在上面实施,那么最好的方法是什么。我正在考虑扩展JTextField以添加所需的功能。好吧,我会设置一些方法来设置弹出列表条目。我将添加一些actionListner来观察文本字段,并相应地控制弹出列表...

3 个答案:

答案 0 :(得分:4)

您可以查看SwingLab的autocomplete功能,它可以将其附加到JCombBoxJListJTextComponent

答案 1 :(得分:4)

自动完成功能是您可能正在寻找的功能。谷歌针对“java swing jcombobox autocomplete”并限制了过去几年的结果,以获得相关结果。关于如何使用自定义代码实现此功能,将会有很多示例和想法。

我相信还有一些自定义库,比如“swingx”,它们提供至少部分或全部实现以节省时间。

http://swingx.java.net/

他们最近在今年年初发布了代码,因此它看起来很活跃,可能会满足您的需求。

答案 2 :(得分:3)

使用AutoComplete JComboBox/JTextField

  • 基于标准Java类

  • 较大的数据集没有问题

  • FocusBackSpace KeyCaret

  • 没问题
  • 为了更好的性能,需要在使用前对array进行排序

  • setStrict(true/false)的简单解决方法,将输入限制为array