[résolu]actualiser Jlist

actualiser Jlist [résolu] - Java - Programmation

Marsh Posté le 01-09-2010 à 13:53:24    

Bonjour
je cherche a actualiser une jlist lorsque je clique sur un item de mon jpopupMenu(qui modifie uniquement l ' etat de ma jlist sans rien rajouter ni supprimer)
seulement , je n ' y arrive pas
 
J ' ai tenté toute les methodes de rafraichissement possible , mais rien n ' y fait
Ca fonctionne par contre si je ferme mon prog et que je le ré ouvre , mais ce que je voudrais , c est que ca soit en temps réel
 
Merci de votre aide
 
voici ma classe qui actualise la Jlist
 

Code :
  1. public class MenuListe extends JPopupMenu implements ActionListener{
  2. private static final long serialVersionUID = 1L;
  3. public MenuListe()
  4. {
  5. super();
  6. createPopupMenu();
  7. }
  8.    
  9.     public void createPopupMenu() {
  10.         JMenuItem menuItem;
  11.      
  12.         menuItem = new JMenuItem("Marquer comme lu" );
  13.         menuItem.addActionListener(this);
  14.         this.add(menuItem);
  15.        
  16.     }
  17.     public void actionPerformed(ActionEvent e) {
  18.         JMenuItem source = (JMenuItem)(e.getSource());
  19.         if(source.getText().equals("Marquer comme lu" ))
  20.        
  21.  ((ListesPersonnalisesInterfaceMessage) InterfaceMessage.getInstance().getListeMessage().getModel()).marqueLu());
  22.        new ListesPersonnalisesInterfaceMessage(Main.inf.getConnexionImap());// il s agit du constructeur du modele de ma jlist que je tente d ' appeller pour la reactualiser
  23.         /*InterfaceMessage.getInstance().getListeMessage().repaint();
  24.         InterfaceMessage.getInstance().getListeMessage().revalidate();
  25.         InterfaceMessage.getInstance().getListeMessage().validate();
  26.         InterfaceMessage.getInstance().getListeMessage().updateUI();*/
  27.        
  28.     }


Message édité par ulquiorra5 le 03-09-2010 à 10:01:46
Reply

Marsh Posté le 01-09-2010 à 13:53:24   

Reply

Marsh Posté le 01-09-2010 à 17:47:31    

Tu n'as pas à invoquer le rafraîchissement toi même, c'est le modèle passé à la construction de ta JList qui est censé prévenir la vue qu'il a changé. Soit tu utilises un modèle prêt à l'emploi genre DefaultListModel, soit tu fais ton propre modèle mais il ne faut pas oublier d'invoquer les méthodes de notification (celles commençant par "fire" ).

Reply

Marsh Posté le 01-09-2010 à 20:15:00    

Merci pour ta réponse.
Justement mon modèle hérite de DefaultListModel (donc les methodes fireXX sont automatisées) sauf qu ' il est rempli via une liste recupérée sur un serveur.
 
Je dois donc passer a nouveau par le constructeur du modele pour rafraichir la Jlist , or je vois pas comment faire
 
Merci de ton aide

Reply

Marsh Posté le 02-09-2010 à 09:38:23    

Dans ton exemple, tu crées un nouveau modèle mais tu ne le passes pas à ta JList (setModel).
Mais tu n'es pas obligé de créer un nouveau modèle, tu peux te contenter de  mettre à jour le modèle existant avec les nouvelles données.

Reply

Marsh Posté le 02-09-2010 à 17:01:48    

Merci de ton aide , ca fonctionne avec le setModel , mais que veux tu dire par actualiser le modèle ? car en fait pour voir l etat modifié de ma jlist , je suis obligé de parcourir un dossier contenant des fichiers( donc passer par le constructeur de mon modèle) , donc je ne sais pas si l ' actualisation fonctionne dans mon cas a part re parcourir le fichier( si tu as une autre méthode je suis preneur).

 

Merci encore


Message édité par ulquiorra5 le 02-09-2010 à 17:02:47
Reply

Marsh Posté le 02-09-2010 à 19:06:38    

Interroge ton serveur ailleurs que dans ton constructeur de modèle, fait une méthode qui va bien et qui utilise remove/clear/add/etc de DefaultListModel. Et tu l'appelles au lieu de construire un autre modèle.
 
Si tu t'amuses à brancher/débrancher les modèles, va aussi falloir brancher/débrancher les listeners, etc. Ca va être le bordel quoi.

Reply

Marsh Posté le 03-09-2010 à 10:00:50    

Ok , merci de ton aide
 
je me doutais bien que j' avais mal structuré mon appli lorsque j ' ai réalisé le diagramme de classe car j ' avais clairement des soucis de performance.
 
Je vais y remédier grâce a toi , merci vraiment
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed