2016-03-16 3 views
0

У меня есть поле со списком, которое отображает элементы в ресторане, я хочу, чтобы иметь возможность выбрать элемент, а затем нажмите кнопку ниже, которая добавит его в DefultListModel, мне удалось сделать это, но я должен использовать многие, если заявлениядобавить выбранный элемент из ComboBox в DefaultListModel

if(comboBoxStarters.getSelectedItem() == "Sticky Chicken Wings") { 
    selectedItems.addElement("Sticky Chicken Wings"); 
} 

if (comboBoxStarters.getSelectedItem() == "French Onion Soup") { 
    selectedItems.addElement("French Onion Soup"); 
} 

if (comboBoxStarters.getSelectedItem() == "Bacon and Salmon Brochettes") { 
    selectedItems.addElement("Bacon and Salmon Brochettes"); 
} 
if (comboBoxStarters.getSelectedItem() == "Sesame Chicken Skewers") { 
    selectedItems.addElement("Sesame Chicken Skewers"); 
} 

я знаю, что вы можете сделать это всего за пару строк кода, но я не могу вспомнить, как, у меня есть это до сих пор:

selectedItems.addElement(this.comboBoxStarters.getSelectedItem()); 
itemList.setModel(selectedItems); 

но это не компиляция

(SelectedItems мой DefaultListModel) (ITEMLIST мой JList)

также все выше код внутри обработчика событий кнопки действий

+0

Что ошибка компиляции ? –

+1

Речь идет не о вашем вопросе, но не используйте '==' для сравнения строк, сделайте ваши сравнения такими 'if (comboBoxStarters.getSelectedItem(). ToString(). Equals (" Sticky Chicken Wings "))' – rdonuk

ответ

0

В ролях getSelectedItem() возвращает значение

selectedItems.addElement((String)this.comboBoxStarters.getSelectedItem()); // added (String) cast 
itemList.setModel(selectedItems); 
0

this все еще может ссылаться на ваш ActionEventListener; вам может потребоваться использовать «квалифицированный это», чтобы ссылаться на указатель вашего внешнего класса this, например OuterClassName.this.

getSelectedItem() может возвращать null, если ни один элемент не выбран, поэтому разумно сначала проверить, не является ли он ненужным.

Object selected = OuterClassName.this.comboBoxStarters.getSelectedItem(); 
if (selected != null) { 
    selectedItems.addElement((String) selected); 
    itemList.setModel(selectedItems); 
} 

Даже безопаснее будет if (selected instanceof String) {, если вы не полностью уверены, что ваш выпадающий будет содержит только строки.

0

Я полагаю, что вы используете Java 7 или верхнюю версию. В Java 7 определение DefaultListModel, как этот

DefaultListModel<E> model = new DefaultListModel<E> 

Таким образом, вы должны бросить выбранный элемент E

selectedItems.addElement((E) this.comboBoxStarters.getSelectedItem()); 

И конечно getSelectedItem() должен возвращать объект с типом E.

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