Вопрос по swing, java – JList.getModel () ClassCastException

6

Когда я звонюJList<String>.getModel() и бросить егоDefaultListModel<String> это дает мне это исключение.

<code>Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JList$4 cannot be cast to javax.swing.DefaultListModel
</code>

Код, который его выбрасывает:

<code>private JList<String> list = new JList<String>();
((DefaultListModel<String>) list.getModel()).addElement(...);
</code>

Это не делает это каждый раз, хотя. Большую часть времени это работает отлично, но иногда это исключение. Я не понимаю, почему это происходит. Могу ли я что-нибудь сделать, чтобы это не произошло?

Для лучшей помощи, отправьтеSSCCE. Andrew Thompson
@ Ditkin Я даже не могу сказать, что редактировал Эндрю. Но я нашел проблему, это был вызов методаsetListData(E[]) изменилListModel из списка. Stripies
Что бы ни стоило, я думал, что вопрос был разумным и полным, хотя это могло быть из-за правок Эндрю. ditkin

Ваш Ответ

4   ответа
1

JList<String>.getModel(), Вы должны инициализировать свой объектJList<String>.setModel(new DefaultModelList())

Error: User Rate Limit Exceeded
5

что это DefaultListModel. Используйте интерфейс ListModel. JList возвращает внутреннюю реализацию ListModel.

Если вам нужен доступ к базовой модели, вы должны ее создать, установите ее в конструкторе JList и сохраните ее самостоятельно.

Error: User Rate Limit Exceeded
9

Select your jList In properties, click the model button select the "Custom code" option Write new DefaultListModel ()

jList custom code

14

//----instantiation----

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

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

    //Retain it wherever you want with
    DefaultListModel model = (DefaultListModel)mList.getModel();
Error: User Rate Limit Exceeded

Похожие вопросы