2014-01-21 5 views
0

У меня есть jCombobox, который имеет список стран. Он заполняется базой данных и содержит countryID и countryName, поэтому в поле со списком отображается только название страны, но при нажатии на значение оно вернет идентификатор выбранной страны. Мне удалось добиться этого, используя пользовательский ListCellRenderer.Реализовать autoComplete на jCombobox

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

Прочитано this tutorial of Autocomplete.

После того, как вы прошли через это, вы можете сделать что-то вроде ...

this.countries = new JComboBox(new Object[] {"United States", "United Kingdom", "Canada", "Mexico"}); 
AutoCompleteDecorate.decorate(this.countries); 
+0

Это не сработало. он бросает исключение класса, поскольку мои объекты отформатированы как Object [] {countriID, countryName} –

2

Теперь то, что я хочу, чтобы иметь функцию автозаполнения для этого выпадающего списка, так что пользователь может ввести страну имя и эффективно перейти к «Интересующей области» в списке со списков

Это функциональность по умолчанию JComboBox. При вводе символов выбор переместится к элементам в списке, который содержит эти символы.

Он заселен базой данных и содержит countryID и countryName, поэтому в поле со списком отображается только название страны, но при нажатии на значение оно вернет идентификатор выбранной страны. Мне удалось добиться этого, используя пользовательский ListCellRenderer.

Пользовательский рендеринг нарушает функциональность по умолчанию, как описано выше.

См. Combo Box With Custom Renderer для решения, которое также реализует KeySelectionManager, поэтому функциональность выбора клавиатуры по-прежнему будет работать.

Смежные вопросы