Java 在JComboBox上实现的自动完成Decorate

Java 在JComboBox上实现的自动完成Decorate,java,swing,autocomplete,jcombobox,swingx,Java,Swing,Autocomplete,Jcombobox,Swingx,对于那些熟悉SwingX的自动完成编辑器的人,我有一个关于如何处理JComboBox弹出窗口可见性的问题。我在我的当前项目中使用了AutoCompleteDecorate.decoration(JComboBox combobox),我在之前的文章中已经提到过,我遇到的问题是,当用户键入的关键字与任何组合框项目都不匹配时,弹出窗口仍然可见。为方便用户,如果键入的关键字与任何combobox项不匹配,我想隐藏combobox的弹出窗口。如果您想要自动完成功能,但又不想有弹出窗口(特别是,如您所述,

对于那些熟悉SwingX的
自动完成编辑器
的人,我有一个关于如何处理
JComboBox
弹出窗口可见性的问题。我在我的当前项目中使用了
AutoCompleteDecorate.decoration(JComboBox combobox)
,我在之前的文章中已经提到过,我遇到的问题是,当用户键入的关键字与任何组合框项目都不匹配时,弹出窗口仍然可见。为方便用户,如果键入的关键字与任何combobox项不匹配,我想隐藏combobox的弹出窗口。

如果您想要自动完成功能,但又不想有弹出窗口(特别是,如您所述,当输入的文本与任何项都不匹配时),您可能希望尝试开源。它有一个非常有用的(我自己也经常使用)自动补全功能,可以应用于
jcombox
es、
JTextField
s等

您可以通过单击上面页面上的“运行它”链接或单击来查看组件的JavaWebStart概述。导航到

Demos->AutoCompletion Demo->AutoCompletion combo box and text field->AutoCompletion JTextField with a hidden data 演示->自动完成演示->自动完成组合框和文本字段->带有隐藏数据的自动完成JTextField 试试看。您还可以通过单击“浏览源代码”来查看源代码

您可以启用/禁用严格标志,以防止/允许用户输入与项目不匹配的文本


然而,据我所测试,JIDE的带有自动完成功能的组合框也有一个“问题”,即使没有找到匹配项,也会保持弹出窗口打开,但我在这里建议尝试一个完全没有弹出窗口的自动完成文本字段(它们会自动完成,突出显示您没有手动输入的匹配文本部分).

如果您想要自动完成功能,但又不想出现弹出窗口(特别是,正如您所提到的,当输入的文本与任何项目都不匹配时),您可能希望尝试开源。它有一个非常有用的(我自己也经常使用)自动补全功能,可以应用于
jcombox
es、
JTextField
s等

您可以通过单击上面页面上的“运行它”链接或单击来查看组件的JavaWebStart概述。导航到

Demos->AutoCompletion Demo->AutoCompletion combo box and text field->AutoCompletion JTextField with a hidden data 演示->自动完成演示->自动完成组合框和文本字段->带有隐藏数据的自动完成JTextField 试试看。您还可以通过单击“浏览源代码”来查看源代码

您可以启用/禁用严格标志,以防止/允许用户输入与项目不匹配的文本


然而,据我所测试,JIDE的带有自动完成功能的组合框也有一个“问题”,即使没有找到匹配项,也会保持弹出窗口打开,但我在这里建议尝试一个完全没有弹出窗口的自动完成文本字段(它们会自动完成,突出显示您没有手动输入的匹配文本部分).

swingx标签已添加。希望这能吸引Kleopatra来回答你的问题。@Hovercraft attracted:-)没有回答,但是:这不受支持(假设你想隐藏弹出窗口),我也不确定它是否应该-如果弹出窗口似乎无缘无故地隐藏/显示,可能会是一种混乱的用户体验…@Kleopatra感谢你让自己“被吸引”对于我的问题:)无论如何,我可以覆盖弹出窗口的可见性吗?如果在组合框列表中注意到键入的关键字,我正在寻找某种方法来实现自动隐藏组合框的弹出窗口。添加了swingx标记。希望这能吸引Kleopatra来回答你的问题。@Hovercraft attracted:-)没有回答,但是:这不受支持(假设你想隐藏弹出窗口),我也不确定它是否应该-如果弹出窗口似乎无缘无故地隐藏/显示,可能会是一种混乱的用户体验…@Kleopatra感谢你让自己“被吸引”对于我的问题:)无论如何,我可以覆盖弹出窗口的可见性吗?如果在组合框列表中注意到键入的关键字,我正在寻找实现自动隐藏组合框弹出窗口的方法。