我有一个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来说明问题。

10-07 19:09