JList.getModel()ClassCastException
当我调用JList.getModel()
并将其JList.getModel()
为DefaultListModel
它给了我这个exception。
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JList$4 cannot be cast to javax.swing.DefaultListModel
抛出它的代码:
private JList list = new JList(); ((DefaultListModel) list.getModel()).addElement(...);
但它并不是每次都这样做。 大部分时间它完美地运行,但有时它会抛出这个exception。 我不明白为什么会这样。 有什么办法可以阻止这种情况发生吗?
您不应该假设它是DefaultListModel。 使用接口ListModel。 JList返回ListModel的内部实现。
如果您需要访问底层模型,您应该创建它,在JList构造函数中设置它并自己保留它。
我遇到过这个问题。 我找到了这个简单的解决方法:
//----instantiation---- JList mList = new JList(); mList.setModel(new DefaultListModel()); /*---- do whatever you want---- */ //Retain it wherever you want with DefaultListModel model = (DefaultListModel)mList.getModel();
如果您使用的是NetBeans
- 选择你的jList
- 在属性中 ,单击模型按钮
- 选择“ 自定义代码 ”选项
- 编写
new DefaultListModel ()
在JList
必须初始化对象JList