2017-07-25 2 views
0

Je sais que la question de savoir comment ajouter un élément à un jList a été posée. Pourtant ... c'est un peu différent car j'utilise le générateur d'interface graphique NetBeans. Il instancie mes deux listes en tant que AbstractListModels. Ensuite, je ne peux pas sembler ajouter un élément d'une liste à l'autre, puis supprimer cet élément de la première liste.Ajouter/Supprimer Swing jList (construit avec le constructeur GUI Netbeans)

Le 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); 

Ma tentative de jeter à DefaultListModel et ajouter un élément (ont pas obtenu à supprimer encore).

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- N'utilisez pas l'éditeur de formulaire Netbeans ou 2- Ne pas pré-remplir le modèle avec des valeurs, faites-le après la méthode 'initComponent' et utilisez un' DefaultListModel' – MadProgrammer

+0

3- Utilisez l'option "code" pour injecter votre propre code dans le processus de création; 4- Cliquez sur le bouton "..." dans la propriété "modèle", sélectionnez "Code personnalisé" dans la liste déroulante "Définir ... propriété du modèle en utilisant" et utilisez votre propre code – MadProgrammer

Répondre

1
  1. Ne pas utiliser l'éditeur de formulaires ou Netbeans
  2. Ne pas préremplis le modèle avec des valeurs, faites-le après la méthode initComponent et utiliser un DefaultListModel ou
  3. Utilisez le « code » dans l'éditeur de feuille de propriétés pour injecter votre propre code dans le processus de création ou
  4. Cliquez sur le bouton ... dans la propriété "Modèle", sélectionnez "Code personnalisé" dans la propriété "Définir ... le modèle en utilisant" combobox et injectez le vôtre code, créez votre propre ListModel, en utilisant probablement un DefaultListModel

Le processus de base de la définition de votre propre modèle, qui prend en charge la mise à jour dynamique, reste le même, que vous avez créé le JList manuellement ou par Netbeans, il vous suffit de décider du meilleur endroit pour injecter votre code