Java 循环jList索引以删除项目
我尝试在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
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复制新列表中除需要删除的项目外的所有项目。然后分配新的jListthis.optio
。这将始终提供一致的结果。但是我该怎么做将每个项目复制到新的jList中,但indexoptio中的项目除外?没问题,我第一次使用Swing时遇到了完全相同的问题:)