簡體   English   中英

如何刪除JList中的多個項目

[英]How to remove multiple items in JList

這很有趣,我無法找到如何刪除JList中的多個選定項目

請幫助

在此輸入圖像描述

UPD:好的,問題出在NetBeans中,因為它創建了JList並設置了模型AbstractListModel ,它不知道如何使用remove方法。

   DefaultListModel dlm = (DefaultListModel) subjectList.getModel();

      if(this.subjectList.getSelectedIndices().length > 0) {
          int[] selectedIndices = subjectList.getSelectedIndices();
          for (int i = selectedIndices.length-1; i >=0; i--) {
              dlm.removeElementAt(selectedIndices[i]);
          } 
    } 

我也遇到過這個問題。 所有發布的解決方案對我都不起作用,因為如果我調用DefaultListModel #remove(int)它將修改基礎列表,因此我之前使用JList#getSelectedIndices()收集的索引不再有效。

我找到了這個對我有用的解決方案。

for (MyObject o : jList1.getSelectedValuesList())
{
    ((DefaultListModel<MyObject>)jList1.getModel()).removeElement(o);
}

通過處理選定的對象,我不必關心索引及其有效性。

我的解決方案

DefaultListModel dlm = (DefaultListModel) lst.getModel();
int count = lst.getSelectedIndices().length;

for (int i = 0; i < count; i++)
{
     dlm.removeElementAt(lst.getSelectedIndex());
}
public int[] getSelectedIndices()

其中foo是JList:

int[] selected = foo.getSelectedIndices();
for(int i : selected){
  foo.remove(i);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM