我有一个组合框在餐馆显示项目,我希望能够选择项目,然后单击下面的按钮将其添加到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)
上面的所有代码都在一个按钮动作事件监听器
中答案 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类型的对象。