Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 循环jList索引以删除项目_Java_Jlist_Selected_Indices - Fatal编程技术网

Java 循环jList索引以删除项目

Java 循环jList索引以删除项目,java,jlist,selected,indices,Java,Jlist,Selected,Indices,我尝试在jList中循环通过所选项目的索引来删除它们 int[] indexoptio; indexoptio = this.list_optio.getSelectedIndices(); for (int i=0; i<indexoptio.length ; i++) { this.optio.remove(indexoptio[i]);} this.list_optio.setModel(optio); int[]indexoptio; i

我尝试在jList中循环通过所选项目的索引来删除它们

int[] indexoptio;
    indexoptio = this.list_optio.getSelectedIndices();

    for (int i=0; i<indexoptio.length ; i++) {
        this.optio.remove(indexoptio[i]);}
    this.list_optio.setModel(optio);
int[]indexoptio;
indexoptio=this.list_optio.getSelectedIndices();

对于(int i=0;i,这将是因为在处理一组引用它的索引时更改数据结构不变。通过一个示例可以更容易地显示这一点。假设您有一个包含3个元素的列表

["item1", "item2", "item3"]
您想删除第1项和第3项,使用上面的代码实际执行的操作是:

items.remove(0);
items.remove(2);
第一次删除后,列表如下所示:

["item2", "item3"]
查看
“item3”
现在位于位置1,而以前位于位置2

所选索引列表引用了原始数据列表,但在第一个删除列表更改之后

我认为以下几点应该适合你:

int[] indexoptio;
indexoptio = this.list_optio.getSelectedIndices();

for (int i=0 ; i<indexoptio.length ; i++) {
    this.optio.remove(indexoptio[i]-i);
}
this.list_optio.setModel(optio);
int[]indexoptio;
indexoptio=this.list_optio.getSelectedIndices();

对于(int i=0;iit似乎他只删除第二个项目…o以其他方式执行,意味着不要从
中删除项目。optio
,创建一个新的jList复制新列表中除需要删除的项目外的所有项目。然后分配新的jList
this.optio
。这将始终提供一致的结果。但是我该怎么做将每个项目复制到新的jList中,但indexoptio中的项目除外?没问题,我第一次使用Swing时遇到了完全相同的问题:)