JListe swing

Résolu
smahaneAAI Messages postés 68 Date d'inscription jeudi 27 janvier 2011 Statut Membre Dernière intervention 7 février 2014 - 17 nov. 2012 à 22:21
smahaneAAI Messages postés 68 Date d'inscription jeudi 27 janvier 2011 Statut Membre Dernière intervention 7 février 2014 - 18 nov. 2012 à 20:38
Bonsoir ,

j'ai réalisé une formulaire en java sous netbeanse, là j'ai 2 jListes :List1 et List2 , quand je click sur le bouton next l'item séléctionné dans List1 doit s'ajouter dans la List2.
et quand j'entre dans une zonne de texte un element et puis je click sur le bouton ajouter il s'ajoute dans la List1.

Dans mon programme les elements s'ajoutent mais en écrasant les élements déjà éxistant et puis pour le bouton ajouter il ajoute l'element saisi même dans la List2
voilà mon code:

package tp.ihm;

import java.awt.Color;
import java.util.Hashtable;
import javax.swing.DefaultListModel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UIManager.LookAndFeelInfo;

/**
 *
 * @author Smahane
 */
public class Accueil extends javax.swing.JFrame {
    
    DefaultListModel dlm = new DefaultListModel();

    /** Creates new form Accueil */
    public Accueil() {
        initComponents();       
       
        
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jPanel_listes = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        List1 = new javax.swing.JList();
        jScrollPane2 = new javax.swing.JScrollPane();
        List2 = new javax.swing.JList();
        next = new javax.swing.JButton();
        left = new javax.swing.JButton();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jPanel1 = new javax.swing.JPanel();
        supprimer = new javax.swing.JButton();
        jText = new javax.swing.JTextField();
        btn_ajout = new javax.swing.JButton();
        jLabel1 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenu2 = new javax.swing.JMenu();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Listes des Données");
        setBounds(new java.awt.Rectangle(200, 100, 0, 0));
        getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jPanel_listes.setBorder(javax.swing.BorderFactory.createTitledBorder("Listes des Contacts"));
        jPanel_listes.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        List1.setModel(new javax.swing.AbstractListModel() {
            String[] strings = { "Contacte A", "Contacte B", "Contacte C", "Contacte D" };
            public int getSize() { return strings.length; }
            public Object getElementAt(int i) { return strings[i]; }
        });
        jScrollPane1.setViewportView(List1);

        jPanel_listes.add(jScrollPane1, new org.netbeans.lib.awtextra.AbsoluteConstraints(40, 50, 130, 202));

        List2.setModel(new javax.swing.AbstractListModel() {
            String[] strings = { "Contacte A", "Contacte B" };
            public int getSize() { return strings.length; }
            public Object getElementAt(int i) { return strings[i]; }
        });
        jScrollPane2.setViewportView(List2);

        jPanel_listes.add(jScrollPane2, new org.netbeans.lib.awtextra.AbsoluteConstraints(310, 50, 120, 202));

        next.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/1353165496_next.png"))); // NOI18N
        next.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                nextActionPerformed(evt);
            }
        });
        jPanel_listes.add(next, new org.netbeans.lib.awtextra.AbsoluteConstraints(210, 90, -1, -1));

        left.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/left_drapeau.png"))); // NOI18N
        jPanel_listes.add(left, new org.netbeans.lib.awtextra.AbsoluteConstraints(210, 150, -1, -1));

        jLabel2.setText("Contacts :");
        jPanel_listes.add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(40, 30, -1, 20));

        jLabel3.setText("Favoris:");
        jPanel_listes.add(jLabel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(310, 30, -1, -1));

        getContentPane().add(jPanel_listes, new org.netbeans.lib.awtextra.AbsoluteConstraints(240, 30, 460, 294));

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Gestion des Listes"));
        jPanel1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        supprimer.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/Remove-Male-User.png"))); // NOI18N
        supprimer.setText("Supprimer");
        supprimer.setToolTipText("hhhhhhhh");
        supprimer.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        supprimer.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                supprimerActionPerformed(evt);
            }
        });
        jPanel1.add(supprimer, new org.netbeans.lib.awtextra.AbsoluteConstraints(370, 30, -1, -1));
        jPanel1.add(jText, new org.netbeans.lib.awtextra.AbsoluteConstraints(100, 30, 131, -1));

        btn_ajout.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/1353175988_Add-Male-User.png"))); // NOI18N
        btn_ajout.setText("Ajouter");
        btn_ajout.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btn_ajoutActionPerformed(evt);
            }
        });
        jPanel1.add(btn_ajout, new org.netbeans.lib.awtextra.AbsoluteConstraints(240, 30, 113, -1));

        jLabel1.setText("Ajouter contacts :");
        jPanel1.add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 30, -1, -1));

        getContentPane().add(jPanel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(180, 340, 520, 90));

        jLabel4.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/twitty_13hl2ns2.png"))); // NOI18N
        getContentPane().add(jLabel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 0, -1, -1));

        jMenu1.setText("Acceuil");
        jMenuBar1.add(jMenu1);

        jMenu2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/image10.png"))); // NOI18N
        jMenu2.setText("Aide");
        jMenuBar1.add(jMenu2);

        setJMenuBar(jMenuBar1);

        pack();
    }// </editor-fold>


    private void nextActionPerformed(java.awt.event.ActionEvent evt) {
        // traitement du bouton next
        
       //on va copier les elements selectionnés de la liste1 vers la liste2
        Object el1=List1.getSelectedValue();
               
      
        dlm.addElement(el1);
        List2.setModel(dlm);
        List2.updateUI();
        
        
    }

    private void btn_ajoutActionPerformed(java.awt.event.ActionEvent evt) {
        // le traitement du bouton ajouter
         
        String nouv=jText.getText();      
      
        dlm.addElement(nouv);
        List1.setModel(dlm);
        List1.updateUI();
        
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new Accueil().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify
    private javax.swing.JList List1;
    private javax.swing.JList List2;
    private javax.swing.JButton btn_ajout;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel_listes;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JTextField jText;
    private javax.swing.JButton left;
    private javax.swing.JButton next;
    private javax.swing.JButton supprimer;
    // End of variables declaration
}




alors ce qui m’intéresse est les traitements des deux bouton next et ajouter.

Un peu d'aide svp, j'ai déjà lus les doc et les tuto ça donne le même code que j'ai réalisé mais ça marche pas de la façon que j veux

2 réponses

smahaneAAI Messages postés 68 Date d'inscription jeudi 27 janvier 2011 Statut Membre Dernière intervention 7 février 2014 10
18 nov. 2012 à 20:38
Super merciiiiiiiii

ça marche maintenant
3
Utilisateur anonyme
18 nov. 2012 à 15:21
Bonjour

Apparemment, vous n'avez pas lu la documentation Java de la méthode JList.setModel(ListModel) :
Sets the model that represents the contents or "value" of the list, notifies property change listeners, and then clears the list's selection.


Vous n'avez pas besoin de l'appeler à chaque fois que vous effectuez un ajout. Vous voyez bien que dans votre code vous changez de modèle plusieurs fois alors que vous devriez associer le modèle à sa liste une seule et unique fois. De plus, je ne comprends pas pourquoi à la fin, à force de cliquer, vous vous retrouvez avec le même modèle de données pour les deux listes. Votre code est confus. Créez une instance implémentant ListModel par JList et passez la au constructeur ou à la méthode setModel().

Je vous recommande le tutoriel suivant :
http://docs.oracle.com/javase/tutorial/uiswing/components/list.html#mutable

Il contient un exemple de code complet qui peut vous être utile :
http://docs.oracle.com/javase/tutorial/uiswing/examples/components/ListDemoProject/src/components/ListDemo.java

Si vous aviez suivi à la lettre le tutoriel officiel d'Oracle et lu la documentation officielle, vous n'auriez pas eu ce problème. Désolé de devoir vous le faire remarquer.
























T.U.E.R (First Person Shooter créé par Julien Gouesse)
0
Rejoignez-nous