我正在尝试使用那段代码更新名为“mdlCategory”的DefaultComboBoxModel。
private void categoriesUpdate(String categoryName, boolean addElement) {
if (!categoryName.equals("")) {
if (addElement) {//that block works propertly
Category c = new Category(-1);
c.setName(categoryName);
mdlCategory.addElement(c);
selAllergenCategory.setSelectedItem(c);
} else {//not works!!
Category cat = (Category) mdlCategories.getSelectedItem();
cat.setName(categoryName);
selAllergenCategory.setSelectedItem(cat);
}
}
}
当addElement为true时,会以正确的方式将新类别添加到模型中。
我在'else'块中遇到问题...当尝试更新类别从DefaultComboBoxModel获取它时,模型不会以适当的方式更改,甚至删除并再次添加它,尽管当我将光标传递过来时组合,改变发生但不持久。
我是否以错误的方式更新了模型的类别对象?
答案 0 :(得分:0)
您应该告知Swing模型中的更改。在if-block中它生成mdlCategory.addElement(c); 。对于else-block,你应该调用setElementAt:
} else {//not works!!
Category cat = (Category) mdlCategories.getSelectedItem();
int idx = mdlCategories.indexOf(cat);
cat.setName(categoryName);
mdlCategory.setElementAt(cat, idx);
selAllergenCategory.setSelectedItem(cat);
}
可能不需要最后一行(selAllergenCategory.setSelectedItem(cat);)