【问题标题】:Autocomplete anywhere per word for JComboBox/JTextFieldJComboBox/JTextField 的每个单词的任意位置自动完成
【发布时间】:2012-05-30 04:52:24
【问题描述】:

我找到了在 JComboBox 上添加自动完成功能的不同解决方案,但它们都从一开始就通过自动完成功能工作。我正在寻找类似于JQueryUI AutoComplete 的解决方案(如果您在文本字段中输入av,它会弹出Java 和JavaScript)。

例如,如果我有以下物品:

  • “红色”
  • “蓝色”
  • “绿色”

如果我输入 n,我想与 Green 进行匹配,因为它包含一个 n。

这是我之前测试的解决方案,它只从一开始就匹配:

  • AutoCompleteDecorator.decorate(comboBox) 来自SwingX
  • AutoCompleteSupport.install(组合框, GlazedLists.eventListOf(elements));来自GlazedLists
  • 来自jautocomp的jautocomp
  • Java2sAutoComboBox.java

上面所有的解决方案都是从头开始匹配的(都使用startWith方法),这不是我要找的。​​p>

你知道其他类似于 JQueryUI 实现的解决方案吗?

【问题讨论】:

    标签: java swing autocomplete jcombobox


    【解决方案1】:

    您可以通过向它们提供子字符串而不是完整字符串来使用上述方法:

    1. check against the full string
    2. check against the substring starting at position 1
    ...
    n. check against the substring starting at position `n-1`
    

    受限于完整字符串的长度

    因此,对于您的示例,您将执行以下操作:

    1. “Green”是否与开头的“n”匹配?否 -> 下一个位置
    2. “reen”是否匹配开头的“n”?否 -> 下一个位置
    3. “een”是否在开头匹配“n”?否 -> 下一个位置
    4. “en”是否匹配开头的“n”?否 -> 下一个位置
    5. “n”是否匹配开头的“n”?是 -> 选择完整的单词(“绿色”)作为匹配项

    【讨论】:

    • 你能提供一个例子吗,我不确定我知道该怎么做?
    • 我想我理解了原理,但是我该如何相应地修改 AutoCompleteDecorator、AutoCompleteSupport 或其他解决方案?
    • 嗯,通读列出的自动完成库/类的文档让我觉得这些限制过度,不允许任何其他方式,但从一开始就匹配。除非您找到一个允许匹配自定义子字符串的方法,否则您似乎必须创建自己的自动完成弹出逻辑
    猜你喜欢
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    • 2012-01-31
    • 2012-06-06
    • 2013-01-18
    • 1970-01-01
    • 2012-08-09
    相关资源
    最近更新 更多