2017-07-25 106 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的,你只需要决定注入代码的最佳位置