2012-08-12 80 views
3

我有一大组数据,用户必须从中选择一组数据。我正在想办法实现它(当然,在一个GUI中)。我有一些想法。但只是想在这里发布,因为可能有更好的选择。从大量条目实现选择框的最佳方法

说,用户必须从一大组用户群中选择一个名称。如果我只是把一个文本字段,用户输入姓名,那么就不可能有问题,如以不同的格式输入相同的名称,拼写错误等..

我在这里看到

  • 两个选项使用组合框
  • 使用列表(其实我想的有点像tool tip,正如我不能总是显示整个列表由于空间问题)

但是,组合框不会有太大的用户友好的我猜。因为用户将不得不滚动整个列表来选择条目。如果条目数量太大,这将是

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

有没有其他更好的方法来实现这种需求?

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

回答

4

自动完成是您可能要查找的内容。谷歌的“java swing jcombobox自动完成”并限制最近几年的结果以获得相关结果。关于如何使用自定义代码实现这一点,将会有很多示例和想法。

我相信也有一些自定义库,如“swingx”,提供至少部分或完整的实现来节省时间。

http://swingx.java.net/

他们已经发布的代码,最近在这几年开始所以会出现活跃,可能有你需要的。

+2

+1当然 - 虽然它应该最近看了_As作为几周ago_ :-)当前版本是1.6.4,于2012年7月底发布 – kleopatra 2012-08-12 07:51:18

+1

非常感谢@BillR。我发现在'swingx'中使用'AutoCompleteDecorator'很容易。我不需要做大的改变,它可以简单地附加到我现有的组件上。它可以与'JComboBox'和'JTextField'一起使用。 (可能会与其他人一起使用,但我只使用过这两种) – Anubis 2012-08-13 05:49:09

4

你可以看看SwingLab的autocomplete功能,它允许您将它连接到一个JCombBoxJListJTextComponent

+0

非常感谢@MadProgrammer不知道这样的事情.. – Anubis 2012-08-13 03:04:26

3

使用AutoComplete JComboBox/JTextField

  • 基于标准Java类

  • 具有更大的数据集没有问题

  • FocusBackSpace Key没有问题,Caret

  • 更好性能到所需的排序对于setStrict(true/false)array使用前

  • 简单的解决方法,限制输入到array

+0

谢谢@mKorbel! – Anubis 2012-08-13 05:49:59