1

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

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

4

1 回答 1

0

You should inform Swing about changes in your model. In if-block it makes mdlCategory.addElement(c); . For else-block you should call setElementAt:

} else {//not works!!
            Category cat = (Category) mdlCategories.getSelectedItem();
            int idx = mdlCategories.indexOf(cat);
            cat.setName(categoryName);
            mdlCategory.setElementAt(cat, idx);
            selAllergenCategory.setSelectedItem(cat);
}

Probably last line (selAllergenCategory.setSelectedItem(cat);) is not required

于 2013-01-21T15:50:12.600 回答