[英]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.