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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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);
     
        }
     
    }

+ 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