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

AWT/Swing Java Discussion :

Gestion de JPANEL


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 119
    Par défaut Gestion de JPANEL
    J'ai un JPANEL général où sont déclarés pas mal de choses dont des boutons

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    JPanel monpanel = new JPanel; //Declaré en global
     
    monpanel.add(button1);
    monpanel.add(button2);
    Je sais que l'on peut imbriquer des JPanel les un dans les autres de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    JPanel monpanel1 = new JPanel();//Declaré en global
    JPanel monpanel2 = new JPanel();//Declaré en global
     
    monpanel1.add(button1);
    monpanel1.add(button2);
    monpanel1.add(monpanel2);
    Les composants de monpanel2 sont declarés dans une autre class

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class Moncontenu{
     
    public JPanel getContenu{
     
    JPanel monpanel = new JPanel();
     
    monpanel.add(button3);
    monpanel.add(button4);
     
    return monpanel;
    }
    }
    Je souhaite integerer un nouveau panel lors d'un evenement sur le button1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void actionPerformed(ActionEvent e) {		
    if(e.getSource() == button1){
       Moncontenu m = new Moncontenu();
       monpanel2 = m.getContenu();
       monpanel2.updateUI();
    }
    }
    le probleme c'est que si je fais ça ça ne marche pas alors que si je fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void actionPerformed(ActionEvent e) {		
    if(e.getSource() == button1){
       Moncontenu m = new Moncontenu();
       monpanel2 = m.getContenu();
       monpanel.add(monpanel2);
       monpanel2.updateUI();
    }
    }
    La tout fonctionne !!!! PKOI ça ne rafraichi pas mon panel monpanel2 lors du premier code, pkoi je suis obligé de faire un add à monpanel pour que ça tourne ?????

  2. #2
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    C'est un pb de poignée.

    au début, monpanel2 pointe sur une première instance de JPanel qu'on va appeler I1.
    Tu ajoutes I1 à monpanel.

    Jusque-là, tout va bien.

    Ensuite, tu récupère une aute instance de JPanel (I2) dans le listener.
    monpanel2 pointe alors sur I2, mais dans le monpanel, il n'y a que I1.

    Donc, c'est normal que tu doives l'ajouter. Tu devrais même retirer I1 avant, par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public void actionPerformed(ActionEvent e) {
       if(e.getSource() == button1){
          Moncontenu m = new Moncontenu();
          monpanel.remove(monpanel2);
          monpanel2 = m.getContenu();
          monpanel.add(monpanel2);
          monpanel2.updateUI(); 
       }
    }
    Si c'est pas assez clair, dis-le moi, je pourrais essayer de développer

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 119
    Par défaut
    J'ai bien compris ton explication mais la ou il y a qqch qui n'est pas normal c'est que monpanel2 (I1 ) a été déclaré en global !

    Quand j'affecte un nouveau contenu à I1 il s'agit du meme JPanel que celui qui est ajouter à monpanel !!!!!

    Il y a donc un seul I1 !!!

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 119
    Par défaut
    LOL j'ai compris pardon

    )))))

    DSL C'est une erreur grave en plus !

    Pour palier cette erreur il faudrait qu eje passe en parrametre mon object monpanel2 à ma classe pour qu'elle travail sur le meme object !

    Voila pkoi ça deconne !

    Mais je vais plutot appliquer ta methode qui me parrait nettement plus propre que la mienne !!!

    Merci à toi

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

Discussions similaires

  1. Gestion des JPanel-Débutant-
    Par Pif_Paf_Pouf dans le forum AWT/Swing
    Réponses: 13
    Dernier message: 29/04/2014, 18h54
  2. Quelle est la bonne gestion de JPanel dans une JFrame ?
    Par jehal dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 10/10/2013, 13h03
  3. Gestion des JPanel dans le GUI Builder de NetBeans
    Par kimjoa dans le forum Débuter
    Réponses: 2
    Dernier message: 23/07/2010, 02h19
  4. [débutant] gestion taille JPanel
    Par Le fut dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 21/02/2007, 13h55
  5. Gestion de menu, JPanels dans une JFrame
    Par Doc.Fusion dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 03/12/2004, 18h27

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