我知道以前曾问过这个问题,并且有很多线程可以剪切和粘贴工作代码,但是我的问题是为什么下面的代码不起作用。我试图从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/