我有一个Java问题。
我编写了一个代码,其中包括一个复选框(mPortalJCheckbox)和组合框(mVersandComboBox)。
如果“复选框”为true,则mVersandComboBox中应该只有2个项目。
否则应该有3个项目。
我的听众是这样的:
mPortalJCheckbox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (mPortalJCheckbox.isSelected() == false) {
System.out.println(mPortalJCheckbox.isSelected());
mVersandComboBox.removeItemAt(2);
mVersandComboBox.revalidate();
mVersandComboBox.repaint();
}
}
});
我认为组合框删除了最后一个项目,但它没有重新绘制组合框。我的错误在哪里?
谢谢 :)
最佳答案
您不需要revalidate()或repaint()。更改组合框模型中的数据时,comboBox将重新绘制自身。removeItemAt(...)
方法仅在ComboBoxModel是可变的时才有效。确保您使用的是DefaultComboBoxModel:
DefaultComboBoxModel model = new DefaultComboBoxModel(...);
JComboBox comboBox = new JComboBox( model );
如果您需要更多帮助,请发布适当的SSCCE来说明问题。