8

私がそれを呼び出し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(...);

ただし、毎回それを行うわけではありません。ほとんどの場合、完全に機能しますが、他の場合はこの例外をスローします。なぜこれが起こっているのか分かりません。これを防ぐために私にできることはありますか?

4

4 に答える 4

16

私はこの問題を経験しました。私はこの簡単な回避策を見つけました:

//----instantiation----

    JList mList = new JList();
    mList.setModel(new DefaultListModel());

    /*---- do whatever you want---- */

    //Retain it wherever you want with
    DefaultListModel model = (DefaultListModel)mList.getModel();
于 2012-08-03T19:59:45.130 に答える
10

NetBeansを使用している場合

  1. jListを選択してください
  2. プロパティで、モデルボタンをクリックします
  3. カスタムコード」オプションを選択します
  4. 書くnew DefaultListModel ()

jListカスタムコード

于 2015-03-17T19:44:24.050 に答える
6

DefaultListModelであると想定しないでください。インターフェイスListModelを使用します。JListは、ListModelの内部実装を返しています。

基になるモデルにアクセスする必要がある場合は、モデルを作成し、JListコンストラクターで設定して、自分で保持する必要があります。

于 2012-04-29T19:35:55.623 に答える
1

JList<String>.getModel(),オブジェクトを初期化する前にJList<String>.setModel(new DefaultModelList())

于 2013-09-18T04:58:55.047 に答える