繁体   English   中英

如何获取从jList中选择的对象

[英]How to get the object that is selected from a jList

我在Netbeans建立了一个Java项目。 我有一个表单,在表单中有一个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:无法将my.mymoviesamn.FavoriteTestForm.jButton1ActionPerformed(FavoriteTestForm.java:104)上的model.FavoriteList转换为my.mymoviesamn.FavoriteTestForm上的java.lang.String。在my.mymoviesamn.FavoriteTestForm $ 1.actionPerformed(FavoriteTestForm.java:51)处访问$ 000(FavoriteTestForm.java:15)在javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)

问题是什么? 当我从jList中选择一个项目时,我想要获取该对象(“收藏夹”)并将其删除。 问题是我无法从jList获取该对象。

您需要创建单独的“空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对象。 事实并非如此 它包含字符串。

因此, 填充该模型的代码的其他部分正在做错事。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM