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

如何从JList中删除选定的项目

卞昀
2023-03-14

当用户点击按钮时,我试图从JList中删除选中的项目。

目前我有这样的东西:

private void clickActionPerformed(java.awt.event.ActionEvent evt) {
   myList.remove(myList.getSelectedIndex());
}

当我单击按钮删除项目时,出现以下错误:

java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 3

如何修复此错误,以及我的代码是否删除了多个项目?

共有3个答案

戴瑞
2023-03-14
Object[] oo=new Object[] { "Clark", "Skill" };
        for(Object o :oo)
            model.addElement(o);
        final JList list = new JList(model);

        JButton btnDelete = new JButton("Delete");
        btnDelete.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {

                if(list.getSelectedIndex()>=0)
                model.remove(list.getSelectedIndex());

            }
        });
戈安翔
2023-03-14

尝试删除对象而不是索引:

private JList<MyObject> list;
private DefaultListModel<MyObject> myobjectListModel;
public FabricaCoches() 
{
....
myobjectListModel = new DefaultListModel<MyObject>();
list = new JList<MyObject>(myobjectListModel);
....
}
@Override
public void actionPerformed(ActionEvent arg0) 
{
    // get a list with selected objects
    List<MyObject> selectedItems = list.getSelectedValuesList();

     for (MyObject o: selectedItems)
        myobjectListModel.removeElement(o);

}

车靖琪
2023-03-14

如果开始从最高选定索引到最低选定索引进行删除,则可以从DefaultListModel中删除多个项。类似于:

@Override
public void actionPerformed(ActionEvent e) {

    switch(e.getActionCommand()){
    case "Remove": {
        int index = this.list[0].getSelectedIndices().length - 1;

        while (this.list[0].getSelectedIndices().length != 0) {
            this.defaultListModel[0].removeElementAt(this.list[0].getSelectedIndices()[index--]);
        }
    }
...  
 类似资料:
  • 问题内容: 谁能告诉我从我删除所选项目的简便方法? 我在Google和此处进行了搜索,但发现了很多方法。我应该使用哪种方式? 问题答案: 正如@Andreas_D所说,以数据为中心,更抽象的ListModel是解决方案。这可以是DefaultListModel。您应该在JList中显式设置模型。所以(感谢@kleopatra发表评论): DefaultListModel中有几种方法。 顺便说一句,

  • 我正在尝试从JList中删除选定的元素。我知道怎么去掉一个 然而;有办法删除我选择的索引吗?我知道这个功能 返回一个Int数组。我想,如果我遍历它以移除索引,它应该会起作用,但是,我会从中得到错误(假设是因为索引#正在下降)。

  • 问题内容: 嗨,我必须从一个JList中选择一个元素,将其从第一个元素中删除。我创建的方法仅插入一个元素,覆盖最后一个元素,并且不会从第一个JList中删除所选项目。这是代码: 第一名单 通过此方法填充: 第二个列表,我要在其中插入从第一个列表中删除的项目: 这是无效代码: 谢谢 问题答案: 问题是 您可能要添加一个元素并立即将其删除,因为添加和删除操作都在同一listModel上。 尝试

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

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

  • 从项目中去除可可的正确方法是什么?我要把整块可可皮去掉。由于我的客户施加的一些限制,我不能使用它。我只需要一个xcodeproj而不是一个XCWorkspace。