我的jComboBox出现问题,无法反映模型中的更改...

在模型中,我有Box类,该类保留Item的数组列表。我有这样定义的组合框模型:

myCombo.setModel(new javax.swing.DefaultComboBoxModel(box.items().toArray()));


(我使用NetBeans的“设计”模式)。据我了解,以这种方式设置模型后,组合框应反映items列表中的所有更改,并且在应用程序开始时,它的确正确显示了item列表中的元素。

我还有一个按钮Add,将Item的随机实例添加到items列表。

    private void buttonAddActionPerformed(java.awt.event.ActionEvent evt) {
    box.addRandomItem();
}


方法addRandomItem()只是将Item的一些新实例添加到items列表中。因此,当我单击“添加”按钮时,新的随机项已正确添加到items列表中(我可以在控制台上看到它的打印内容),但是在GUI级别,组合框中的列表没有被更新,因此我看不到新添加的项目。

最佳答案

您应该使用addElement(E element)insertElementAt(E element, int index)将新项目手动添加到模型中。

在内部,DefaultComboBoxModel会复制您作为构造函数中的参数提供的项目,因此无法知道原始数组已更改。

关于java - Java Swing-jComboBox不刷新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44436031/

10-12 07:11