如何正确使用我的值作为JComboBox.setModel()的参数?

时间:2014-06-24 16:29:24

标签: java swing exception combobox defaultlistmodel

在下面的代码中,我尝试创建一个DefaultListModel对象用于我的JComboBox

显然,setModel()方法只接受一个ComboBoxModel对象。我试图转换它,我得到了例外,java.lang.ClassCastException

我已经了解了如何解决这个具体问题,但我找不到任何有用的东西。

然后我尝试创建一个ComboBoxModel对象,但我了解到这个类是抽象的。如何绕过此问题,并获取setModel()的有效参数?

private void setComboBoxYears(int numberOfYears, JComboBox comboBox) {
        DefaultListModel<Integer> years = new DefaultListModel<>();
        for(int i = 1; i <= numberOfYears; i++)
            years.addElement(i);
        comboBox.setModel((ComboBoxModel) years);

2 个答案:

答案 0 :(得分:3)

如果您正在寻找解决方案,请尝试以这种方式:

final JComboBox<Integer> comboBox = new JComboBox<Integer>();
Integer[] years = new Integer[numberOfYears];
for (int i = 0; i < numberOfYears; i++)
    years[i] = i + 1;

comboBox.setModel(new DefaultComboBoxModel<Integer>(years));

答案 1 :(得分:1)

  1. 改为使用DefaultComboBoxModel
  2. 请查看API,因为所有这些信息都可以通过简单的一瞥来收集。