![](/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.