簡體   English   中英

JList.getModel()ClassCastException

[英]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

  1. 選擇你的jList
  2. 屬性中 ,單擊模型按鈕
  3. 選擇“ 自定義代碼 ”選項
  4. 編寫new DefaultListModel ()

jList自定義代碼

您不應該假設它是DefaultListModel。 使用接口ListModel。 JList返回ListModel的內部實現。

如果需要訪問底層模型,則應創建它,在JList構造函數中設置它並自己保留它。

JList<String>.getModel(),必須初始化對象JList<String>.setModel(new DefaultModelList())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM