3

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

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

我在这里看到两个选项

  • 使用组合框
  • 使用列表(实际上我正在考虑类似的东西tool tip。由于空间问题,我无法始终显示整个列表)

但我猜组合框不会对用户很友好。因为用户必须滚动整个列表才能选择一个条目。如果条目的数量太大,这将是

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

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

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

4

3 回答 3

4

您可以查看 SwingLab 的自动完成功能,它允许您将其附加到JCombBox,JListJTextComponent

于 2012-08-12T06:06:17.163 回答
4

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

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

http://swingx.java.net/

他们最近在今年年初发布了代码,所以它看起来很活跃,可能有你需要的东西。

于 2012-08-12T06:06:46.157 回答
3

使用自动完成 JComboBox/JTextField

  • 基于标准 Java 类

  • 更大的数据集没有问题

  • Focus, BackSpace Key,没问题Caret

  • array为了获得更好的性能,在使用前进行所需的排序

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

于 2012-08-12T06:36:37.717 回答