我有一个具有国家列表的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);