将所选项从ComboBox添加到DefaultListModel

时间:2016-03-16 18:01:46

标签: java eclipse combobox jlist

我有一个组合框在餐馆显示项目,我希望能够选择项目,然后单击下面的按钮将其添加到DefultListModel,我已设法做到这一点,但我必须使用许多if语句

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)

上面的所有代码都在一个按钮动作事件监听器

3 个答案:

答案 0 :(得分:0)

转换getSelectedItem()返回值

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

答案 1 :(得分: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) {,除非您完全确定您的组合框只包含字符串。

答案 2 :(得分:0)

我想您使用的是Java 7或更高版本。在java 7中,DefaultListModel定义就像那样

DefaultListModel<E> model = new DefaultListModel<E>

因此您必须将所选项目投射到E

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

当然getSelectedItem()应该返回一个E类型的对象。