簡體   English   中英

如何將項目從jlist復制到另一個?

[英]how to Copy an item from jlist to another?

我將項目從一個jlist復制到另一個jlist時遇到問題,我設置了一個按鈕操作偵聽器代碼,它可以正常工作,但並不能滿足我的需要。 當我選擇一個項目並按下按鈕時,所選項目的副本將位於jlist2中

但是問題是如果我選擇相同的項目並單擊按鈕,則該項目將顯示兩次,這是不期望的。

這是代碼,請盡快提供幫助。

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) 

{ 
  int[] selectedIx = jList1.getSelectedIndices();

  DefaultListModel lm = new DefaultListModel();
  ListModel list = jList2.getModel();

  for (int i = 0; i < list.getSize(); i++) {
      Object prev = list.getElementAt(i);
      lm.addElement(prev);
  }

  for (int i = 0; i < selectedIx.length; i++) {
      Object sel = jList1.getModel().getElementAt(selectedIx[i]);
      lm.addElement(sel);
  }

  jList2.setModel(lm);

} 

非常感謝。

原因是您將元素兩次添加到DefaultListModel中。

Object prev  and Object sel   

像這樣

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)     
{ 
    List<String> selectedValuesList = jList1.getSelectedValuesList();
    jList2.setListData(selectedValuesList.toArray(new String[selectedValuesList.size()]));    
} 

如果我理解正確你的意圖,要項目復制到jList2當按鈕被按下, 避免重復, 保持已較早復制的項目。 假設jList2使用DefaultListModel ,則可以檢查它是否已經包含一個項目:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { 
    DefaultListModel list = (DefaultListModel) jList2.getModel();

    for (Object sel : jList1.getSelectedValues()) {
        if (list.indexOf(sel) == -1) {
            list.addElement(sel);
        }
    }
}

(使用最新的Java,您還應該使用泛型和getSelectedValuesList() )。

暫無
暫無

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

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