![](/img/trans.png)
[英]Java/Netbeans: JList.getModel() returns a ListModel instead of a DefaultListModel
[英]JList.getModel() ClassCastException
当我调用JList<String>.getModel()
并将其JList<String>.getModel()
为DefaultListModel<String>
它给了我这个异常。
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JList$4 cannot be cast to javax.swing.DefaultListModel
抛出它的代码:
private JList<String> list = new JList<String>();
((DefaultListModel<String>) list.getModel()).addElement(...);
但它并不是每次都这样做。 大部分时间它完美地运行,但有时它会抛出这个异常。 我不明白为什么会这样。 有什么办法可以阻止这种情况发生吗?
我遇到过这个问题。 我找到了这个简单的解决方法:
//----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
new DefaultListModel ()
您不应该假设它是DefaultListModel。 使用接口ListModel。 JList返回ListModel的内部实现。
如果需要访问底层模型,则应创建它,在JList构造函数中设置它并自己保留它。
在JList<String>.getModel(),
必须初始化对象JList<String>.setModel(new DefaultModelList())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.