【问题标题】:How to make a text field for searching(with tips like a google search)如何制作用于搜索的文本字段(带有谷歌搜索等提示)
【发布时间】:2011-06-25 15:06:40
【问题描述】:

我想使用 java swing 为 PC 制作一个窗口应用程序。我想在那里创建一个文本字段。在输入该文本字段时,我需要它在该文本字段下显示提示。用户可以从列表中选择需要的文本。就像谷歌搜索在浏览器中所做的一样。所以我需要两个函数,第一个很简单:通过已经输入的文本过滤一组字符串。但是如何在列表中显示它们?

EDIT1:如果过滤后有要显示的内容,我需要显示列表,并且可以使用上下键进行选择。与谷歌搜索相同,但在 PC 应用程序上。

【问题讨论】:

    标签: java swing user-interface jtextfield


    【解决方案1】:

    我建议您在 JTextField 中添加 DocumentChangeListener 以监控插入/删除/更新字符:

    JTextField textField = new JTextField;
    textField.addDocumentListener (new DocumentListener() {
      public void changedUpdate(DocumentEvent e) {
      }
      public void removeUpdate(DocumentEvent e) {
      }
      public void insertUpdate(DocumentEvent e) {
      }
    }
    );
    

    看看这个tutorial

    所以我需要一些两个功能,首先 一个很简单:过滤一组字符串 通过已经输入的文本。

    现在您已经输入了文本,过滤您的字符串集。在选择一种有效的方式来存储和检索数据结构中的字符串时要小心。有很多字符串要排序,这可能不是微不足道的。 (如果你的字符串集很大的话,我认为使用 ArrayList 会很难做到这一点。)

    但是如何在列表中显示它们?

    我认为您可以使用 JLabel。 或者,您可以尝试使用实现您自己的ComboBoxModel 的 JComboBox。我不知道是否可以始终打开组合框。

    【讨论】:

    • 谢谢您的回复,但我需要的是第二个显示列表的功能,我已经更新了问题,请参考。据我所知,JLabel 不提供从列表中选择的方法..
    • @maximus:将列表分开并在 jlabel 中显示。
    • 没有方法 JTextField.addDocumentListener() - 改用 JTextField.getDocument().addDocumentListener()
    【解决方案2】:

    JComboBox 是一个 common choiceAutoCompleteJComboBoxer 是我试过的。

    【讨论】:

      【解决方案3】:

      嗯 .... 在 JTextField 中,为 keypress 添加一个侦听器,然后只要按下任何键,就使用一个集合对所有相关元素进行排序。一个选项是让 String toChar 获取每个字符,然后将记录发布到 JList 中。

      其次,您最好将记录保存在 XML 中,这样跟踪会更容易,因为任何排序算法逻辑都可以轻松应用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-09-29
        • 1970-01-01
        • 1970-01-01
        • 2018-12-13
        • 1970-01-01
        相关资源
        最近更新 更多