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 :

Rafraichir le contenu d'un JTabbedPane


Sujet :

Composants Java

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 11
    Par défaut Rafraichir le contenu d'un JTabbedPane
    Bonjour.
    Voila j'ai un petit problème. Je fait une interface graphique avec Swing et j'aimerai rafraichir le contenu du JtabbedPane ou un de ses onglets.

    Dans l'onglet il y a une Jlist, c'est une liste de contact téléphonique. Je voudrai que en ajoutant, supprimant ou modifiant un de ces contacts, mon onglet ce mette a jour.

    J'ai essayé en supprimant les onglets et en les rajoutant et sa marche, mais je veut faire une gestion d'évènement (le double clic) sur cet onglet, et donc si je supprime les onglets et je les rajoute, la gestion d'évènement ne marche plus après.

    J'ai essayer avec validate(), revalidate(), repain(), updateUI() mais rien
    et la je craqueeeeeeeeeeeee

    ps : j'ai fait plein plein de recherche déjà et j'ai pas trouvé la réponse.

    Merci pour votre aide.
    Images attachées Images attachées  

  2. #2
    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 ce sont les données du modèle de ta JList qu'il faut mettre à jour, l'as tu fait?

  3. #3
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 11
    Par défaut
    quand je fait un ajouter contact, sa ajoute un contact dans ma liste de contact de mon fichier texte avec la méthode addContact. Mais après le addContact faut faire quoi pour rafraichir la fenêtre ????

    Pour ajouter un contact sa ouvre une petite fenêtre avec FrameAddContact ^^

    Comment on met a jour la JList justement ?



    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
    47
    48
    49
    50
    51
    52
    53
    54
     public Contenu(FenetrePrincipale FP) throws IOException
    {
        ....
        JTP = new JTabbedPane();
        list1 = new JList(contact.lireRepertoire());
        JTP.addTab("Repertoire", list1);
        list1.addMouseListener(this);
        ....
    }
     
    void FrameAddContact()
    {
        ....
        final JFrame frame = new JFrame("Ajouter un Contact");
        JTF1 = new JTextField(10);
        JTF2 = new JTextField(7);
        JButton JB1 = new JButton("Ajouter Contact");
        JB1.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                 try
                 {
                     mesContact.addContact(JTF1.getText() + " : " + JTF2.getText());
                 }catch(IOException e1)
                 {
                     e1.printStackTrace();
                 }
                 frame.dispose();
           }
        });
        frame.dispose();
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
     
     
    public static void main(String s[]) throws IOException
    {
        // la fenêtre principale
        FenetrePrincipale fp = new FenetrePrincipale("Telephone");
        // ajout du menu et toolbar dans fenêtre principale
        fp.leMenu();
     
        // crée un contenu, JTabbedPane, JLit, JButton ......
        Contenu c = new Contenu(fp);
        // on ajoute ce contenu a la fenêtre principale
        fp.ajoute(c);
     
        fp.pack();
        fp.setLocationRelativeTo(null);
        fp.setVisible(true);
    }

  4. #4
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 360
    Par défaut
    pour raffraichire ta fenetre tu fait
    jlist.updateui() (Mise a jour de jlist) puis
    tontabbedpane.updateui();
    pour qu'il prend nouveau modifs
    vous essayez sa doit marcher

  5. #5
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 11
    Par défaut
    donc tu me dit de faire sa ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    mesContact.addContact(JTF1.getText() + " : " + JTF2.getText());
    monContenu.maJList.updateUI();
    monContenu.monJTabbedPane.updateUI();
    monContenu.updateUI();
    sa marche pas
    sa met pas a jour mon affichage :'(

  6. #6
    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
    Les appels à repaint, updateUI, revalidate & cie ne font que raffraichir la partie graphique. Par contre si les données ne sont pas actualisée, il est tout à fait normal qu'elles ne s'affichent pas.


    Pour ajouter des lignes à une JList il faut passer par son modèle (cf archi MVC de Swing)


    Un petit exemple pour comprendre comment procéder

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.DefaultListModel;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JList;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.UIManager;
    import javax.swing.UnsupportedLookAndFeelException;
     
     
    public class TestList extends JPanel {
     
        private JList list;
        private DefaultListModel model;
        private JButton button;
        private int count = 6;
     
        public TestList() {
            super();
            model = new DefaultListModel(); 
            model.addElement("toto1");
            model.addElement("toto2");
            model.addElement("toto3");
            model.addElement("toto4");
            model.addElement("toto5");
            list = new JList(model);
            button = new JButton("Ajouter ligne");
            button.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent arg0) {
                    model.addElement("toto"+count);
                    count++;            
                }        
            });
     
            this.setLayout(new BorderLayout());
            this.add(new JScrollPane(list), BorderLayout.CENTER);
            this.add(button, BorderLayout.SOUTH);
        }
     
        /**
         * @param args
         */
        public static void main(String[] args) {
            try {
                UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            } catch (ClassNotFoundException e) {
                // TODO Bloc catch auto-généré
                e.printStackTrace();
            } catch (InstantiationException e) {
                // TODO Bloc catch auto-généré
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                // TODO Bloc catch auto-généré
                e.printStackTrace();
            } catch (UnsupportedLookAndFeelException e) {
                // TODO Bloc catch auto-généré
                e.printStackTrace();
            }
     
            JFrame f = new JFrame();
            f.add(new TestList());
            f.pack();
            f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            f.setLocationRelativeTo(null);
            f.setVisible(true);
     
        }
     
    }

  7. #7
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 11
    Par défaut
    le truc c'est que ma liste est rempli a partir d'un fichier texte :/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list1 = new JList(contact.lireRepertoire());
    contact.lireRepertoire() retourne un String[] de mon fichier texte qui est comme sa :
    Alban : 888888
    Bertrand : 45874
    Moi : 666
    ....

  8. #8
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 360
    Par défaut
    est ce que tu met a jour ta jlist quand tu fait la mise ajour de jlist avec les nouvelles données, il faut les mettres a jour au niveau de ton modele et tu affiche le contenu de ton jlist avec un system.out .print sur la console pour verfier si ils sont modifier ci bon ci nom ci au niveau de ton modele ou la fonction avec laquelle tu charge les donnée de fichier texte ou il y a le pbm
    pour moi j'ai le meme pbm avec jtreetable et il est resolu je met ajour mon modele et je fait repaint et updateui() pour la partie garphique

  9. #9
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 11
    Par défaut [Résolu]
    Youpiiiiiiiiii j'ai trouvé, sa marche niquel !!!!!
    J'ai fais une méthode de mise a jour pour le model de ma JList et c'est parfait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void MAJlist1() throws IOException
    {
    	String[] lesContacts = contact.lireRepertoire();
    	model.clear();
    	for(int i = 0; i < lesContacts.length; i++)
    		model.addElement(lesContacts[i]);
    }
    Merci a tous :-)

    Sujet Résolu

  10. #10
    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
    Citation Envoyé par Macharius66 Voir le message
    le truc c'est que ma liste est rempli a partir d'un fichier texte :/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list1 = new JList(contact.lireRepertoire());
    contact.lireRepertoire() retourne un String[] de mon fichier texte qui est comme sa :
    Alban : 888888
    Bertrand : 45874
    Moi : 666
    ....
    Au lieu de faire comme dessus il te suffit de créer ton modèle de la façon suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    String[] contacts = contact.lireRepertoire();
    DefaultTableModel model = new DefaultTableModel();
    for(int i=0; i< contacts.length; i++) {
      model.addElement(contacts[i]);
    }
    list1 = new JList(model);

    Trop rapide pour moi

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

Discussions similaires

  1. rafraichir le contenu d'une listbox
    Par alexlevenere dans le forum C#
    Réponses: 2
    Dernier message: 19/02/2008, 12h41
  2. JTabbedPane rafraichir le contenu
    Par aristeas dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 05/02/2008, 05h52
  3. Comment Rafraichir le contenu de mes controles
    Par abir84 dans le forum Windows Forms
    Réponses: 16
    Dernier message: 16/05/2007, 16h12
  4. Rafraichir le contenu d'1 frame a partir d'1 autre
    Par Tartenpion dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/08/2006, 21h03
  5. Réponses: 6
    Dernier message: 02/06/2006, 12h44

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