public static void removeItems(JList newMenuItemsList) {
DefaultListModel listModel = (DefaultListModel) newMenuItemsList.getModel();
listModel.removeAllElements();
}
当我运行此代码时,我得到了一个删除
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException:
javax.swing.JList$3 cannot be cast to javax.swing.DefaultListModel
我怎样才能克服这一点。
答案 0 :(得分:2)
在我看来,您正在使用类似以下代码的数组创建JList:
String[] numbers = { "1001", "1002", "1003" };
JList list1 = new JList<String>( numbers );
如果使用数组作为参数创建JList
,则JList
会为您创建ListModel
的简单实现。此模型将是静态的,无法更改。这就是为什么你看到JList$3
作为模型的类名。
如果您想要动态ListModel
,那么您需要使用动态模型。
一种简单的方法是使用DefaultComboBoxModel
。它允许您在创建DefaultComboBoxModel
。
DefaultComboBoxModel model = new DefaultComboBoxModel(numbers);
JList list2 = new JList<String>( model );
如果您想使用DefaultListModel
,则需要创建DefaultListModel
,然后将数组中的每个项目分别加载到模型中。
DefaulListModel model2 = new DefaultListModel();
JList list2 = new JList<String>( model2 );
for (String number: numbers)
model2.addElement( number );