Java Swing - jComboBox 不刷新
Java Swing - jComboBox not refreshing
我有一个问题,我的 jComboBox 没有反映模型中的变化...
在我有 Box
class 的模型中,它保留了 Item
的数组列表。我有一个这样定义的组合框模型:
myCombo.setModel(new javax.swing.DefaultComboBoxModel(box.items().toArray()));
(我使用 NetBeans 'design' 模式)。据我了解,以这种方式设置模型后,组合框应反映 items
列表中的任何更改,并且在应用程序开始时,它确实正确显示了 item
列表的元素.
我还有一个添加按钮,用于将 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
会复制您在构造函数中作为参数提供的项目,因此无法知道原始数组是否已更改。
我有一个问题,我的 jComboBox 没有反映模型中的变化...
在我有 Box
class 的模型中,它保留了 Item
的数组列表。我有一个这样定义的组合框模型:
myCombo.setModel(new javax.swing.DefaultComboBoxModel(box.items().toArray()));
(我使用 NetBeans 'design' 模式)。据我了解,以这种方式设置模型后,组合框应反映 items
列表中的任何更改,并且在应用程序开始时,它确实正确显示了 item
列表的元素.
我还有一个添加按钮,用于将 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
会复制您在构造函数中作为参数提供的项目,因此无法知道原始数组是否已更改。