在JCOMBOBOX上实现自动完成



我有一个具有国家列表的Jcombobox。它由数据库填充,并包含countryID和乡下人名称,因此仅在组合框中显示国家名称,但是当单击一个值时,它将返回所选国家的ID。我已经使用自定义listCellRenderer来实现这一目标。

public class UGIS_ComboboxRenderer extends JLabel implements ListCellRenderer {
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
    Object[] itemData = (Object[]) value;
    setText((String) itemData[1]);
    return this;
}
}

一个乡村对象看起来与此对象相似

Object[] country1 = new Country(){1, "United Kingdom"}

我有一个像上面之类的对象的阵列列表,然后将它们添加到Combobox中

for (Object[] temp : countrylist) {
        jComboBox1.addItem(temp); 
                }

现在,我想要的是拥有此组合的自动完成功能,以便用户可以在组合框列表中键入国家名称并有效地导航到"感兴趣的区域"。关于如何实现这一目标的任何想法?

现在我想要的是具有此ComboBox的自动完成功能,以便用户可以在组合框列表中键入国家名称并有效地导航到"感兴趣的区域"

这是Jcombobox的默认功能。当您键入字符时,选择将移至包含这些字符的列表中的项目。

它由数据库填充,并包含countryID和乡村名称,因此仅在组合框中显示国家名称,但是当单击一个值时,它将返回所选国家的ID。我已经使用自定义listCellRenderer来实现这一目标。

一个自定义渲染器破坏默认功能,如上所述。

请参阅带有自定义渲染器的组合框,以进行解决方案,该解决方案也实现了KeyselectionManager,因此键盘选择功能仍然可以使用。

阅读此autocomplete的教程。

一旦您完成了,您就可以做类似...

之类的事情
this.countries = new JComboBox(new Object[] {"United States", "United Kingdom", "Canada", "Mexico"});
AutoCompleteDecorate.decorate(this.countries);

相关内容

  • 没有找到相关文章

最新更新