更新Swing DefaultComboBoxModel

时间:2013-01-21 14:36:40

标签: java eclipse swing netbeans

我正在尝试使用那段代码更新名为“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获取它时,模型不会以适当的方式更改,甚至删除并再次添加它,尽管当我将光标传递过来时组合,改变发生但不持久。

我是否以错误的方式更新了模型的类别对象?

1 个答案:

答案 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);)