Как получить объект, который выбран из jList - PullRequest
0 голосов
/ 05 февраля 2019

Я строю Java-проект на Netbeans.У меня есть форма, и внутри формы у меня есть jList, который заполнен объектом (Избранное).У меня также есть кнопка, и я хочу, чтобы при нажатии кнопки удалить выбранный элемент из списка jList.

Я пытаюсь использовать следующий код, но получаю сообщение об ошибке.

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

    int selectedIndex = jList1.getSelectedIndex();
    ListModel lModel= jList1.getModel();
    Favorite item = (Favorite)lModel.getElementAt(selectedIndex);
    System.out.println("name= "+ item.getName());   
}      

Я получаюследующая ошибка:

Исключение в потоке "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String не может быть приведено к модели.FavoriteTestForm.java:104) в my.mymoviesamn.FavoriteTestForm.access $ 000 (FavoriteTestForm.java:15) в my.mymoviesamn.FavoriteTestForm $ 1.actionPerformed (FavoriteTestForm.java:51) в javax.Button.: 2022)

В чем проблема?Когда я выбираю элемент из списка, я хочу получить этот объект (Избранное) и удалить его.Проблема в том, что я не могу получить этот объект из jList.

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019
Favorite item = (Favorite)lModel.getElementAt(selectedIndex);

Вы предполагаете, что ваша модель содержит Favorite объектов.Это не .Содержит строки.

Итак, другие части вашего кода, которые заполняют этой модели, делают что-то не так.

0 голосов
/ 05 февраля 2019

Вам нужно создать отдельный Пустой List и вставить в него объекты, которые выделены перед его удалением.

По мере поступления ClassCastException вам нужно проверить, какой тип itms в ListModel должен бытьString вот почему вы получаете эту ошибку.

Вы должны сделать пользовательскую ListModel, как показано ниже:

class ListModel extends AbstractListModel {
  private Favorite mfavorite;

  public ListModel(Favorite favorite) {
    mfavorite = favorite;
  }

  public Favorite getFavorite() {
    return mfavorite;
  }

  public Object getElementAt(Favorite favorite) {
    return favorite;
  }
}
...