如何获取从 jList 中选择的 object

How to get the object that is selected from a jList

我在 Netbeans 构建了一个 Java 项目。 我有一个表格,在表格内我有一个 jList,其中填充了 object(收藏夹)。 我还有一个按钮,我想在按下按钮时删除 jList 中的 selected 项目。

我正在尝试以下代码,但出现错误。

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());   
}      

我收到以下错误:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to model.FavoriteList at my.mymoviesamn.FavoriteTestForm.jButton1ActionPerformed(FavoriteTestForm.java:104) at my.mymoviesamn.FavoriteTestForm.access[=12=]0(FavoriteTestForm.java:15) at my.mymoviesamn.FavoriteTestForm.actionPerformed(FavoriteTestForm.java:51) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)

有什么问题? 当我 select jList 中的一个项目时,我想得到那个 object (收藏夹)并删除它。 问题是我无法从 jList.

得到 object

您需要创建单独的 Empty List 并在其中插入在删除之前选择的对象。

随着 ClassCastException 的到来,您需要检查 ListModel 下的 itms 类型,它必须是 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;
  }
}
Favorite item = (Favorite)lModel.getElementAt(selectedIndex);

您假设您的模型包含 Favorite 个对象。它不是。它包含字符串。

因此 填充 那个模型的代码的其他部分做错了。