我建立在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:java.lang.String中不能在my.mymoviesamn.FavoriteTestForm被转换为在model.FavoriteList my.mymoviesamn.FavoriteTestForm.jButton1ActionPerformed(FavoriteTestForm.java:104)。访问$ 000(FavoriteTestForm.java:15)在my.mymoviesamn.FavoriteTestForm $ 1.actionPerformed(FavoriteTestForm.java:51)在javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
问题是什么?当我选择从一个的jList项目我想获得该对象(喜欢的),并删除它。问题是我无法的jList获取该对象。
Favorite item = (Favorite)lModel.getElementAt(selectedIndex);
你认为你的模型包含Favorite
对象。它不是。它包含字符串。
填补该模型的代码,这样其他部分正在做的事情是错误的。
您需要创建单独的空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;
}
}