2017-07-25 144 views
0

我知道如何將元素添加到jList的問題已被問到。然而...這與我使用NetBeans GUI構建器有點不同。它將我的兩個列表實例化爲AbstractListModels。然後,我似乎無法將一個元素從一個列表添加到另一個列表,然後從第一個列表中刪除該元素。添加/刪除Swing jList(使用Netbeans GUI構建器構建)

JList的:

colors1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); 
     colors1.setModel(new javax.swing.AbstractListModel<String>() { 
      String[] strings = { "red", "yellow", "green", "blue", " ", " ", " ", " ", " " }; 
      public int getSize() { return strings.length; } 
      public String getElementAt(int i) { return strings[i]; } 
     }); 
     jScrollPane1.setViewportView(colors1); 

     colors2.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); 
     colors2.setModel(new javax.swing.AbstractListModel<String>() { 
      String[] strings = { "black", "white", "gray", "brown", " ", " ", " " }; 
      public int getSize() { return strings.length; } 
      public String getElementAt(int i) { return strings[i]; } 
     }); 
     jScrollPane2.setViewportView(colors2); 

我試圖轉換爲defaultlistmodel和添加元素(還沒有得到去除還)。

private void addColorsActionPerformed(java.awt.event.ActionEvent evt) {           
     DefaultListModel list1 = (DefaultListModel) colors1.getModel(); 
     DefaultListModel list2 = (DefaultListModel) colors2.getModel(); 
     list2.addElement(colors1.getSelectedValue()); 
     //Haven't actually attempted this yet but if I had would look like. 
     //list1.removeElement(colors1.getSelectedValue()); 
    }  
+0

1-不要使用Netbeans表單編輯器或者2-不要使用值預填充模型,在initComponent方法之後執行並使用DefaultListModel – MadProgrammer

+0

3-使用「代碼」選項將自己的代碼注入創建過程; 4-在「model」屬性中單擊「...」按鈕,從「Set ... model property」中使用「combobox」選擇「Custom code」並注入自己的代碼 – MadProgrammer

回答

1
  1. 不要使用NetBeans表單編輯器或
  2. 不要預先填充值模型中,initComponent方法之後做到這一點,並使用DefaultListModel
  3. 使用「代碼」選項在屬性表編輯器中將自己的代碼注入到創建過程中或
  4. 單擊...按鈕在「模型」屬性中,從「Set ... model property using ...」中選擇「Custom code」組合框並注入你自己的代碼,創建自己的ListModel,可能使用DefaultListModel

定義自己的模型,它支持動態更新的基本過程是一樣的,無論您是否手動或通過NetBeans中創建的JList的,你只需要決定注入代碼的最佳位置