【问题标题】:How to make an auto-complete list when I start to type in the textfield?当我开始输入文本字段时如何制作自动完成列表?
【发布时间】:2011-11-05 19:28:48
【问题描述】:

我有一个文本字段,如果我想在该字段中写一些东西,它会显示与该字母有关的可能选项列表,我认为这称为自动完成。

有人可以给我一个想法或示例吗?

谢谢..

【问题讨论】:

  • 你想在哪里实现它?在 HTML 或 QT 或任何其他 GUI 模式下。没有这个,这个问题就很难回答了
  • @Koran - 问题被标记为(普通)java,所以我期待 AWT/Swing
  • 仅在 GUI 中。稍后我将使用我数据库中的单词,因为我正在制作翻译程序。
  • 什么图形用户界面?即使在java中,它在eclipse和swing中也有SWT。这不一样。如果是swing,它应该标记swing而不是intellij-idea。

标签: java swing autocomplete intellij-idea jtextfield


【解决方案1】:

我感觉很慷慨,因为你真的应该用谷歌搜索...

当用户键入时,您需要使用like '<userInput>%' 查询您的数据库并将结果返回到下拉列表中。您可能希望等待用户输入暂停,以免敲击您的数据库。

在没有数据库的情况下,可以很好地解决这个问题的数据结构称为Trie,因为您可以遍历它,通过初始输入并呈现所有后续单词。

【讨论】:

  • 谢谢,但我只会使用 GUI。当我在文本字段中输入内容时,建议列表将出现在文本字段下方。建议列表将来自我的数据库,但与此同时,我可以在将其应用到我的数据库之前尝试一串数组。你能帮我或对这个有任何想法吗?谢谢..
  • 同样的事情......当用户键入(键事件)时,您将不得不从文本字段中捕获输入并搜索您使用的任何数据源以进行匹配。使用数组很昂贵,因为您的性能是 O(n*m)(因为您将不得不搜索数组中的每个字符串),但对于测试它会很好。
  • 是的.. 我已经尝试了一些单元测试,现在我希望它在 GUI 中尝试。它安静地很难这就是为什么我要问这种东西。嗯,我试试你说的。 tnx .. ;-)
【解决方案2】:

选择一个组合框并听取文本字段中的所有更改。在每个事件中,阅读实际内容并查询您的源列表以查找可能的匹配项。然后使用结果填充关联列表。

您可能希望在用户输入两个或三个字母后开始自动完成,否则列表可能会太长..

【讨论】:

  • 如果我使用 Jlist 而不是 Combo box 可以吗?我还需要为此使用 JPopupMenu 吗?
  • 当然,如果您接受将文本字段与建议列表分开。但通常这是在 one 小部件中完成的:您输入一些内容,建议出现在您的片段下方。 - (2),不,使用 JComboBox 你不需要弹出菜单。
  • 是的......你所说的就是我真正需要的,你知道如何将建议列表放在文本字段下方吗?我的意思是,当我在该字段中输入内容时,我是否必须为此使用其他窗口,或者只是进行一些 x、y 坐标以便显示在文本字段下方?
  • JComboBox 已经提供了文本字段和列表的组合。这就是为什么它被称为组合框
  • 啊.. 好的,我明白了.. 这对我有很大帮助,感谢您的帮助。 ;-)
【解决方案3】:

看看hereAutoCompleteComboBox / JFextField,有两个类,一个是JComboBox,第二个是JTextField,注意自动完成功能需要这两个类

【讨论】:

  • 如何运行?它需要一个主要的。
  • 你必须定义一些数组,例如 List,然后 setDataList(myList)
  • 查看我在这里多次发布的个人资料(自动完成或 JComboBox 或带有自动完成组合框的表格或带有自动完成组合框的 JTable)
  • 我已经检查了你的个人资料,但我没有看到任何样本。
猜你喜欢
  • 1970-01-01
  • 2020-09-16
  • 2018-08-10
  • 1970-01-01
  • 2012-06-08
  • 1970-01-01
  • 2014-09-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多