我有一个拥有国家/地区列表的jCombobox。它由数据库填充并包含countryID和countryName,因此只有国家名称显示在组合框中,但是当单击某个值时,它将返回所选国家/地区的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"}
我有一个像上面这样的对象的ArrayList,并将它们添加到像这样的组合框
for (Object[] temp : countrylist) {
jComboBox1.addItem(temp);
}
现在我想要的是为这个组合框提供一个自动完成功能,以便用户可以输入国家名称并有效地导航到组合框列表中的“感兴趣区域”。关于如何实现这个的任何想法?
答案 0 :(得分:2)
现在我想要的是为这个组合框设置一个自动完成功能,以便用户可以输入国家名称并有效导航到组合框列表中的“感兴趣区域”
这是JComboBox的默认功能。当您键入字符时,选择将移动到列表中包含这些字符的项目。
它由数据库填充并包含countryID和countryName,因此只有国家名称显示在组合框中,但是当点击某个值时,它将返回所选国家/地区的ID。我已设法使用自定义ListCellRenderer实现此目的。
自定义渲染器会破坏默认功能,如上所述。
有关同时实现KeySelectionManager的解决方案,请参阅Combo Box With Custom Renderer,以便键盘选择功能仍可用。
答案 1 :(得分:0)
阅读this tutorial of Autocomplete。
一旦你完成了这个,你可以做一些像......
this.countries = new JComboBox(new Object[] {"United States", "United Kingdom", "Canada", "Mexico"});
AutoCompleteDecorate.decorate(this.countries);