IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

Ajouter une ligne dans un Jlist


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 179
    Par défaut Ajouter une ligne dans un Jlist
    Bonjour,

    Je cherche a ajouter une ligne dans une Jlist qui est remplie par un arrayList
    J ' ai tente ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public void addLigne(Object value) {
     
     
            this.addElement((String) value);
            System.out.println(value);
     
            int rowIndex = messages.size()-1;
            fireIntervalAdded(messages, rowIndex, rowIndex);
     
        }
    mais ca ne fonctionne pas

    mon modele est le suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    public class ListesPersonnalisesPanelAppel extends DefaultListModel{
    	private  ArrayList<Messages> messages= new ArrayList<Messages>();
    	private static  List <Messages> messagesSupprimes= new ArrayList<Messages>();
    	Imap connexionImap= new Imap();
    	public ListesPersonnalisesPanelAppel()
    	{
    		messages=new InfosServeur().recupererMessages();
     
    	}
     
     
    	public Object getElementAt(int index) {
    		// TODO Auto-generated method stub
    		return messages.get(index);
    	}
     
    	@Override
    	public int getSize() {
    		// TODO Auto-generated method stub
    		return messages.size();
    	}
        public void addLigne(Object value) {
     
            this.addElement((String) value);
            System.out.println(value);
            int rowIndex = messages.size()-1;
            fireIntervalAdded(messages, rowIndex, rowIndex);
     
        }
    c ' est possible d ' ajouter une ligne de la sorte sans devoir ajouter un élément a mon arrayList (qui contient plusieurs attributs)

    pour infos , j ' appelle ma fonction ainsi lors du clic de mon bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ajouter.addActionListener(new ActionListener()
    			{
     
    				public void actionPerformed(ActionEvent e) {
    					 ((ListesPersonnalisesPanelAppel) listeMessage.getModel()).addLigne("Message supprimes");
     
    				}
    			});
    merci de votre aide

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 179
    Par défaut
    Personne a une idée


    La methode addElement ne fonctionne pas apparemment lorsque la jlist est remplie avec une arrayList

    Et je ne peux pas utiliser la methode add car mon arrayList contient des objets Messages , or je voudrai juste rajouter une ligne avec un String

    Merci de votre aide

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 299
    Par défaut
    Salut,

    Si tu veux utiliser un ArrayList, tu peux utiliser cette méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    List<Messages> liste = new ArrayList<Messages>();
    liste.setListData(liste.toArray());
    Après, pour le rafraichissement écran, il faudra peut-être ajouter un validate().

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 179
    Par défaut
    Salut ,

    Merci pour ton aide

    En fait , la méthode setListData fonctionne pour des object[] et n est donc pas compatible pour ma liste


    Comme solution externe , j ' ai tente de creer un autre constructeur dans ma classe Message qui prend uniquement un String en parametre
    et de faire un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maliste.add(new Message(" Message supprimés")
    mais puisque j ' ai une methode toString ds cette classe qui affiche 3 parametres , c ' est un peu mort>_<


    Je desire juste rajouter une ligne avec une String dedans

    Merci encore

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 299
    Par défaut
    Citation Envoyé par ulquiorra Voir le message
    En fait , la méthode setListData fonctionne pour des object[] et n est donc pas compatible pour ma liste
    C'est pour cela qu'il faut rajouter .toArray() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    List<Messages> liste = new ArrayList<Messages>();
    liste.setListData(liste.toArray());

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 179
    Par défaut
    Merci de ton aide

    oui , c ' est avec le toArray() que j 'ai testé

    ca me met ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    The method setListData(Object[]) is undefined for the type List<Messages>
    il n y a pas moyen de juste rajouter un élément a une jlist déjà remplie par une arrayList sans devoir rajouter un élément a celle ci ?

    Merci encore

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 179
    Par défaut
    Ok merci de ton aide
    Je m ' en doutais bien que c ' etait parce que j ' utilisais une arrayList au lieu de la collection de defaultListModel(object[])

    Mais comment faire donc pour rajouter une ligne sans l ' ajouter a mon ArrayList?
    car celle ci est composée d ' un objet Message personnalise avec 3 attributs(un bool et 2 string) et je ne peut donc y ajouter un simple String

    J ' ai tente de contourner cela en rajoutant un constructeur dans ma classe Message qui prend seulement un String en paramètre et appeler celui dans addLigne , sauf qu étant donne que j ai redéfini toString dans Message pour afficher mes 3 attributs
    , ca m affiche quant même 3 valeur si j ' appelle ce constructeur.

    Merci de ton aide

  8. #8
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Bah tu fais en sorte que ton ArrayList de message ne soit pas utilisée dans ton modèle.

    C'est à dire qu'elle serve juste dans le constructeur de ton modèle pour initialiser la structure de données du modèle. Structure de données qui sera constituée de simple chaines.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 179
    Par défaut
    Merci de ton aide

    J ' essaye depuis hier mais je n ' arrive a rien et je n ' ai pas tres bien compris ta solution

    En gros tu me demandes de remplir mon modele avec une simple chaine comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    public class ListesPersonnalisesInterfaceMessage extends DefaultListModel{
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
    	private  List<Messages> messages= new ArrayList<Messages>();
    	private static   List <Messages> messagesSupprimes= new ArrayList<Messages>();
    	Object[] data = {"Par defaut"};
    	public ListesPersonnalisesInterfaceMessage(Imap connexionImap)
    	{
     
    		 boolean etat = false;
    		   for ( int i =0; i < connexionImap.nbMessage(); i++ ) {
    		          try {
    		        	  if(connexionImap.isRead(i)==true) etat=true;
    		        	  else if(connexionImap.isNew(i)==false) etat=false;
    					messages.add(new Messages(etat,connexionImap.recupererNumero(i).toString(),connexionImap.recupererDate(i).toString()));
     
    				} catch (MessagingException e) {e.printStackTrace();}
     
    		          System.out.println(messages);
     
    		        }
    		   try {
    			connexionImap.close();
    		} catch (MessagingException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
     
     
    	}
     
     
     
    	public Object getElementAt(int index) {
    		// TODO Auto-generated method stub
     
    		return data[index];
    	}
     
    	@Override
    	public int getSize() {
    		// TODO Auto-generated method stub
    		return data.length;
    	}
    sauf qu ' en faisant ca ma jlist n est plus remplie avec mon arrayList mais uniquement avec la chaine.
    Et j ' ai besoin de rajouter cette chaine lors du clic d ' un bouton

    En gros ce que tu demandes , c ' est que le modele soit remplie avec 2 donnees a la fois ou j 'ai mal compris ce que tu veux dire et je voudrais bien un petit exemple

    Merci encore de ton aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ajouter une ligne dans GtkListStore
    Par leged dans le forum GTK+ avec C & C++
    Réponses: 4
    Dernier message: 04/08/2006, 18h44
  2. [vb6] Ajouter une ligne dans un tableau excel
    Par Asdorve dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 13/06/2006, 16h41
  3. Ajouter une ligne dans un Stringgrid
    Par jouze dans le forum Composants VCL
    Réponses: 6
    Dernier message: 20/02/2006, 21h40
  4. Ajouter une ligne dans un DBGrid
    Par jbaers dans le forum Bases de données
    Réponses: 3
    Dernier message: 28/11/2005, 09h18
  5. Ajouter une ligne dans une liste via un POPUP
    Par seblo_scoqi dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/01/2005, 16h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo