我知道以前曾问过这个问题,并且有很多线程可以剪切和粘贴工作代码,但是我的问题是为什么下面的代码不起作用。我试图从JList中删除多个项目,但是当我运行以下代码时,出现了超出范围的异常。这是代码段:

static DefaultListModel<File> listModel = new DefaultListModel<>();
JList<File> fileList = new JList<>(listModel);

void removeFiles() {
    int[] listRange = new int[100];
    listRange = fileList.getSelectedIndices();
    int i = 0;
    while (i <= listRange.length) {
        listModel.remove(listRange[i]);
        i++;
    }
}


我已经使用调试语句来确认fileList正在获取数据(即,如果我添加4个文件,其长度为4),并且我还确认了listRange中的索引代表了我所引用的文件的索引要删除。但是由于某种原因,它不会删除它们。我试过从fileList以及模型(listModel)中删除,但都无法正常工作。我在这里俯瞰什么吗?谢谢。

最佳答案

开箱即用的解决方案是按照相反的顺序删除项目,以避免出现越界异常:

int[] listRange = fileList.getSelectedIndices();
int i = listRange.length-1;
while (i >= 0) {
    listModel.remove(listRange[i]);
    i--;
}

关于java - 从JList删除项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36114884/

10-11 04:31