Java JList.getModel()类CastException
当我调用Java JList.getModel()类CastException,java,swing,jlist,Java,Swing,Jlist,当我调用JList.getModel()并将其强制转换为DefaultListModel时,它给出了这个异常 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<St
JList.getModel()
并将其强制转换为DefaultListModel
时,它给出了这个异常
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(...);
private JList=new JList();
((DefaultListModel)list.getModel()).addElement(…);
但并不是每次都这样。大多数时候它工作得很完美,但其他时候它抛出这个异常。我不明白为什么会这样。我能做些什么来阻止这种情况发生吗?您不应该假设它是一个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();
在
JList.getModel(),
之前,如果使用NetBeans,必须初始化对象JList.setModel(新的DefaultModelList())
为了更快地获得更好的帮助,请发布一篇文章。关于这个问题的价值,我认为这个问题是合理和完整的,尽管这可能是因为andrew的编辑。@ditkin我甚至不知道andrew编辑了什么。但是我发现了问题,它调用了方法
setListData(E[])
更改了列表的ListModel
。。。使用新的默认列表模型创建它可以修复所有问题+1与前面的答案相比,没有什么新的,是吗;-)保留它是没有必要的!看尼古拉·德斯波托斯基的答案,它的效率要高得多!