当前位置: 首页 > 知识库问答 >
问题:

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

罗伟志
2023-03-14

我在Netbeans构建了一个Java项目。我有一个表单,表单内部有一个jList,其中填充了一个对象(Favorite)。我也有一个按钮,我想当我按下按钮删除选定的项目在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不能转换为模型。favorite list at my . my movie samn . favorite testform . jbutton 1 action performed(favorite testform . Java:104)at my . my movie samn . favorite testform . access $ 000(favorite testform . Java:15)at my . my movie samn . favorite testform $ 1 . action performed(favorite testform . Java:51)at javax . swing . abstract button . fire action performed(abstract button . Java:2022)

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

共有2个答案

仲俊豪
2023-03-14

您需要创建单独的空列表,并在删除之前在其中插入选定的对象。

随着ClassCastException的出现,您需要检查ListModel下的itms类型是什么,它必须是一个字符串,这就是您收到此错误的原因。

您应该制作如下所示的自定义列表模型:

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;
  }
}
郭乐湛
2023-03-14
Favorite item = (Favorite)lModel.getElementAt(selectedIndex);

假设模型包含收藏夹对象。事实并非如此。它包含字符串。

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

 类似资料:
  • 我通过JFileChooser使用下面这段代码将一个名为test.xml的文件添加到我的JList中; 现在我必须从Jlist中选择一个文件,然后将它转换成另一个文档。如果我给出输入,转换步骤就会起作用; 但是如果我给它,它就不起作用; 列表及其向量使用以下代码段创建: 你们谁能告诉我如何从JList中选择该特定文件来进行转换吗?提前感谢…!

  • 我有一个超文本标记语言选择框,在我的jsp中启用了多选择。我从其他按钮动态填充选项。因此,用户不会从该选择框中选择任何值。我必须将selectbox的所有值传递给其他jsp。 我正在使用表单操作提交浏览jsp。这样做时,我无法获得所有的选择框值。 此选项仅提供该多选框中的选定值。我想要的是从selectbox中获取所有值,无论是否选中。 谢谢

  • 我正在创建一个屏幕,上面有四个列表。基本上是两对列表,您可以在对中的一个列表上选择行,然后将它们移动到对中的另一个列表。 查看文档,我需要为每个列表提供一个ListSelectionModel来确定选择了哪些行。我将使用[Sel]或[Des]按钮来执行实际的传输。 文档和示例说我需要一个ListSelectionListener,但是,由于在用户单击按钮之前我不会访问模型,所以我实际上需要一个监听

  • 我有一个启用了的JList,我希望将项的选择顺序传递给另一个进程。 我尝试在JList上使用并检查是否将其添加到数组中,但是,这不会添加位于选定项之下的新项,它只添加位于JList中当前选定项之上的项。 我要做的事情有什么明显的错误吗?

  • 有可能在JList中获得所选元素的位置吗?我想让它将JFrame放在单击选项的正下方。

  • 当用户点击按钮时,我试图从JList中删除选中的项目。 目前我有这样的东西: 当我单击按钮删除项目时,出现以下错误: 如何修复此错误,以及我的代码是否删除了多个项目?