Probleme d'ajout a une liste

vegeta0 Messages postés 8 Date d'inscription jeudi 16 juin 2011 Statut Membre Dernière intervention 1 février 2012 - 25 janv. 2012 à 23:45
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 1 févr. 2012 à 14:10
Bonsoir;
j'ai crée une liste mais quand j'ajoute un deuxième élément le premier s’écrase.
Voila le code que j'ai utilisé :

Vector noms=new Vector();
Container contentpane;
JList membre = new JList();

public Client(String nom,String mdp){ //constrecteur

this.nom=nom;
this.pwd=mdp;
this.setTitle("Aplication client/serveur");
this.setSize(300,550);
ajout(nom);

membre = new JList(noms);
contentpane = getContentPane();
membre.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
contentpane.add(membre);

membre.setToolTipText("La liste des clients connectés");

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setVisible(true);

}


public void ajout(String nom){
System.out.println("ajout de "+ noms +" à la liste des clients connectés");
noms.addElement(nom);
membre.setListData(noms);
this.membre.validate();

}


Merci pour votre aide.

17 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
26 janv. 2012 à 07:50
Bonjour,

Ta méthode ajout n'écrase rien dans la liste, le problème est ailleurs. Peux tu nous montrer le code qui te permet d'appeler la méthode ajout ? Je dirais que tu recréé un nouvel objet à chaque appel de la méthode mais je ne peux pas en être certain.
0
vegeta0 Messages postés 8 Date d'inscription jeudi 16 juin 2011 Statut Membre Dernière intervention 1 février 2012
27 janv. 2012 à 22:46
Bonsoir
J'ai déjà appelé la méthode a la ligne 11 .. est ce que je peut stocke les elements a la fin du vector .. sinn est ce qu'il y a un solution


merci bcp pour vote attention
0
vegeta0 Messages postés 8 Date d'inscription jeudi 16 juin 2011 Statut Membre Dernière intervention 1 février 2012
27 janv. 2012 à 22:48
Merci pour votre aide :)
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
28 janv. 2012 à 13:40
A chaque appel, tu recréés un vector de noms, normal que tu n'ais qu'un seul élément à chaque fois.

Pour t'en sortir places le mot clé static devant le vecteur de noms. Et de cette façon ça marchera.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vegeta0 Messages postés 8 Date d'inscription jeudi 16 juin 2011 Statut Membre Dernière intervention 1 février 2012
28 janv. 2012 à 23:52
J'ai déja essai mé ne march pas si vous pouvez de m donné un ptite code pour ajouter un element a une list pour bien comprendre .. merci bcp Julien39
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
29 janv. 2012 à 13:20
Comment çà, çà ne marche pas ? Une exception est levée ? Quel code as tu utilisé ?

Il faut être précis pour obtenir des réponses efficaces.
0
vegeta0 Messages postés 8 Date d'inscription jeudi 16 juin 2011 Statut Membre Dernière intervention 1 février 2012
29 janv. 2012 à 20:44
bonsoir

j'ai ajouté mot clé static pour vector et fonction main pour fair l'appel au class

Vector noms=new Vector();
Container contentpane;
JList membre = new JList();

public Client(String nom,String mdp){ //constrecteur

this.nom=nom;
this.pwd=mdp;
this.setTitle("Aplication client/serveur");
this.setSize(300,550);
ajout(nom);

membre = new JList(noms);
contentpane = getContentPane();
membre.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
contentpane.add(membre);

membre.setToolTipText("La liste des clients connectés");

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setVisible(true);

}


public void ajout(String nom){
System.out.println("ajout de "+ noms +" à la liste des clients connectés");
noms.addElement(nom);
membre.setListData(noms);
this.membre.validate();

} 


SVP j'ai besoin a exemple d'un code pour ajouté a un liste pour bien comprendre comment sa se passe .
merciii bcp
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
30 janv. 2012 à 08:26
Je t'ai dit d'ajouter static devant Vector noms=new Vector();

: public static Vector noms=new Vector();
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
30 janv. 2012 à 08:27
Tu ajoutes correctement dans ta liste, tu n'as pas compris d'ou venait le problème. Relis mes messages précédents.

Tu recréés à chaque fois l'objet vector, ajouter le static te permettra de ceonserver le même objet.
0
vegeta0 Messages postés 8 Date d'inscription jeudi 16 juin 2011 Statut Membre Dernière intervention 1 février 2012
30 janv. 2012 à 22:09
Merci Julien39
j'ai ajouté static devant Vector

Static Vector noms=new Vector();
mé ne march pas

en tout cas merci bcp et désolé pour le derangment :)
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
31 janv. 2012 à 08:21
Qu'est ce que ca veut dire "ca ne marche pas" ?
0
vegeta0 Messages postés 8 Date d'inscription jeudi 16 juin 2011 Statut Membre Dernière intervention 1 février 2012
31 janv. 2012 à 13:46
méme probleme je peut pas ajouté les élément j'ai une seul element dans la liste je sais pas ou il est le probleme .. ?

mercii
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
31 janv. 2012 à 14:03
Peux tu me montrer ton code ? Celui avec le static ?
0
vegeta0 Messages postés 8 Date d'inscription jeudi 16 juin 2011 Statut Membre Dernière intervention 1 février 2012
1 févr. 2012 à 13:37
le voila

import java.awt.*;

import java.util.Vector;

import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;


public class Membre extends JFrame  {
  JPanel pan=new JPanel();
      JPanel pan2=new JPanel();

  static Vector noms=new Vector();
  JList destinataires = new JList(noms);

  public void ajout(String nom){
      System.out.println("ajout de "+ noms+" à la liste des clients connectés");
      noms.addElement(nom);
      destinataires.setListData(noms);
      this.destinataires.repaint();
    }

  
Container contentpane;
public  Membre(){
 this.setTitle("Aplication client/serveur");
        this.setSize(730,520);
     
   	 
        ajout("liste");
        destinataires = new JList(noms);

        contentpane = getContentPane();
    destinataires.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
contentpane.add(destinataires);
        destinataires.setToolTipText("La liste des clients connectés");

destinataires.addListSelectionListener(new ListSelectionListener() {

public void valueChanged(ListSelectionEvent e) {
destinataires.getSelectedIndex();
}
});
 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLocationRelativeTo(null);
        this.setVisible(true);

}

  public static void main(String[] args){
            
          
          	Membre fenetre=new Membre();
            
} 

}
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
1 févr. 2012 à 13:59
Bonjour,

Cette ligne : destinataires.setListData(noms); est inutile, on travail avec des références.

Je te conseil d'utiliser les ListModel et de faire un addElement, ce n'est pas que noms ne contient qu'un seul éléménet mais c'est que ta liste n'est pas bien rafraichie : tu peux regarder ce lien :

http://docs.oracle.com/javase/tutorial/uiswing/components/list.html

La partie qui t'intéresse est "Adding Items to and Removing Items from a List"
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
1 févr. 2012 à 14:08
D'ailleurs si tu utilises les model, tu n'as pas besoin du static et tu n'as pas besoin de l'attribut noms.


public void ajout(String nom){
   System.out.println("ajout de "+ noms +" à la liste des clients connectés");
   ((DefaultListModel)membre.getModel()).addElement(nom);
   this.membre.repaint();
}


Mais avant, il faut avoir initialisé ta liste avec un DefaultListModel
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
1 févr. 2012 à 14:10
Si tu veux voir le principe, j'ai fait la même chose avec une JTable il y a quelque temps : http://www.javafr.com/codes/JTABLE-REDIMENSIONNABLE_53420.aspx
0