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

Agents de placement/Fenêtres Java Discussion :

[ EDIT : Méthode revalidate et repaint d'un JPanel ? ] Récupérer la JFrame depuis son ContentPane.


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre confirmé
    Inscrit en
    Août 2002
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 132
    Par défaut [ EDIT : Méthode revalidate et repaint d'un JPanel ? ] Récupérer la JFrame depuis son ContentPane.
    Bonjour à tous,
    j'ai un MultiTimer extends JPanel implements ActionListener dont un bouton ajoute un minuteur : il y a un minuteur par défaut, puis on peut en ajouter via ce bouton (le bouton est en position BorderLayout.SOUTH tandis que les minuteurs que j'ajoute (et qui sont des Timer entends JPanel) viennent s'ajouter en BorderLayout.CENTER) :

    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
     
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
     
    public class MultiTimer extends JPanel implements ActionListener{
        JPanel jpCenter;
        public MultiTimer(){
            super();
            this.setLayout(new BorderLayout());
            jpCenter = new JPanel();
            jpCenter.add(new Timer());
            JButton jb = new JButton("Add");
            jb.addActionListener(this);
            this.add(jpCenter,BorderLayout.CENTER);
            this.add(jb,BorderLayout.SOUTH);
        }
        public void actionPerformed(ActionEvent ae){
            jpCenter.add(new Timer());
            // LA JFRAME .pack()
        }
    }
    Dans mon actionPerformed(...), je souhaite adapter la fenêtre dont ce JPanel est le panneau de contenu à son nouveau contenu ... mais ... comment faire pour récupérer la JFrame correspondante ? (Je pourrais l'ajouter dans les champs de ma classe MultiTimer, mais je me demandais s'il n'y avait pas une méthode, telle la méthode getParent() qui renvoie le container dans lequel on se trouve...

    D'avance, merci !

  2. #2
    Membre confirmé
    Inscrit en
    Août 2002
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 132
    Par défaut
    J'ai trouvé !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SwingUtilities.getWindowAncestor(this).pack();
    est l'instruction qui fait le job ...

    En fait, merci Chat GPT qui a corrigé mon actionPerformed(...) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void actionPerformed(ActionEvent ae){
        jpCenter.add(new Timer());
        jpCenter.revalidate();
        jpCenter.repaint();
        SwingUtilities.getWindowAncestor(this).pack();
    }
    Néanmoins, les méthodes revalidate() et repaint(), dans mon cas, ne semblent pas nécessaires... Quelqu'un pour m'expliquer si elles sont ... utiles ? nécessaires ?

Discussions similaires

  1. Récupérer un fichier .ml depuis son .cmo
    Par kimymet dans le forum Caml
    Réponses: 1
    Dernier message: 24/07/2014, 14h32
  2. [Joomla!] Récupérer un article depuis son ID
    Par leame dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 10/11/2011, 09h55
  3. [JTree] Récupérer l'index d'un noeud depuis son TreePath
    Par jojodu31 dans le forum Composants
    Réponses: 9
    Dernier message: 30/05/2008, 16h33

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