【问题标题】:swing autocomplete text field / drop down摆动自动完成文本字段/下拉
【发布时间】:2011-03-17 03:14:32
【问题描述】:

我们需要一个用于 swing 的自动完成组件,jdesktop/SwingX 中的问题是我们必须使用一个组合框,每次击键后它只是向下滚动到最近的匹配项,但组合仍然包含 25.000 个元素.它不会显示最接近的 4 或 5 匹配,因为它们可以位于列表的不同位置。我们也不想显示包含 25000 的列表...

有什么类似于 JSF 自动完成或谷歌主页中的那个吗?我们需要的是一个组件,它会向我们的界面询问类似

公共列表 getOptions(String typedSoFar) { //这里我们根据我们的标准返回5个匹配的,并简单地提供给//用户这五个 }

【问题讨论】:

    标签: java swing autocomplete


    【解决方案1】:

    swingX 是最好的答案。

    AutoCompleteDecorator.decorate(textComplete, strings, true);
    

    其中textComplete 是文本框,strings 是带有建议字典的jList,最后一个值是是否将文本字段的内容限制在字典中。

    【讨论】:

      【解决方案2】:

      GlazedList 不是很好,SwingX 也支持自动完成,比“GlazedList”更容易。 你只写:

      AutoCompleteDecorator.decorate(yourComboBox);
      

      【讨论】:

      • 让这个答案更有帮助的事情:GlazedList 有什么不好的地方?链接到 SwingX 项目及其 AutoCompleteDecorator?您在哪里提供自动完成单词列表?
      【解决方案3】:

      一个非常简单的方法是使用自动完成的 GlazedList 实现。启动和运行非常容易。你可以在这里找到它:

      http://publicobject.com/glazedlists/

      您可以在 JComboBox 上安装自动完成功能,只需一行 Glazed 代码,如下所示:

      JComboBox 组合框 = 新的 JComboBox(); 对象 [] 元素 = 新对象 [] {“猫”、“狗”、“狮子”、“老鼠”}; AutoCompleteSupport.install(comboBox, GlazedLists.eventListOf(elements));

      【讨论】:

        【解决方案4】:

        我没有使用过 SwingX,对它们的实现一无所知。最好的想法可能是扩展 SwingX Autocomplete 类。不要直接使用 Autocomplete 类,而是创建一个扩展 Autocomplete 类的专有类并覆盖 getOptions() 方法:

        class OurOwnAutocomplete extending swingx.*.*.autocomplete {
        
            private List getOptions(String typedSoFar) { // 
        
            // logic 
        
           }
        

        【讨论】:

        • swingX的自动完成中没有getOptions这样的方法
        猜你喜欢
        • 2012-05-24
        • 2010-10-15
        • 1970-01-01
        • 1970-01-01
        • 2021-06-21
        • 2016-03-04
        • 1970-01-01
        相关资源
        最近更新 更多