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 :

méthode changerPanel(JPanel pane)


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 26
    Par défaut méthode changerPanel(JPanel pane)
    Bonjour, j'essaye depuis un moment de créer une méthode qui changerai la panel
    courant de ma JFrame, j'en suis pour le moment à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
           public void changerPanel(JPanel jp){
             getContentPane().setVisible(false);
             getContentPane().remove(panel);
             panel=jp;        	
             setContentPane(panel);
             getContentPane().setVisible(true);		 
          }
    malheureusement je viens de remarquer que si j'enlève le remove ça ne fait aucun changement, seul le setVisible(false) enlève mon anciens panel... du moins le rend invisible. Donc j'aimerais savoir si qqn aurait une méthode me permettant d'enlever une bonne fois pour toute mon JPanel de ma JFrame et d'y ajouter un nouveau JPanel ! merci d'avance.

  2. #2
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Tu enlève ton panel de lui-même j'ai l'impression... ça n'a pas vraiment de sens.

    De toute façon, quand tu changes un panel, il faut appeler la méthode revalidate() ensuite. Ce que tu ne fais pas.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 26
    Par défaut
    Je ne comprend pas le "j'enlève un panel à lui même..." pour moi (bien sûr je me trompe souvent) j'ai un JPanel que j'ai mis dans mon ContentPane, je lui demande de l'enlever avec le remove, puis j'ajoute un nouveau panel que j'ai pris en entré... et pour le revalidate je n'arrive pas à l'utiliser malgré que je l'ai trouvé dans la java doc comme méthode d'un JComponent...

  4. #4
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Là tu dis : je met panel comme content panel.
    Donc panel EST le content panel. Il n'est pas DEDANS.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getContentPane().remove(panel);
    Là tu dis que tu enlève le panel au content panel, qui, comme dis au dessus, EST panel...

    Donc problème.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 26
    Par défaut
    j'ai donc enlevé le setContentPane et je met un getContentPane... mais ça ne marche toujours pas et je ne vois pas où utiliser le revalidate().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
           public void changerPanel(JPanel jp){
             getContentPane().setVisible(false);
             getContentPane().removeAll();
             panel=jp;  
             getContentPane().add(panel);
             getContentPane().setVisible(true);
     
          }
    si vous avez une solution à mon problème ou pouvez m'expliquer ce que je fais mal je suis preneur ! merci d'avance

  6. #6
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Citation Envoyé par natha Voir le message
    il faut appeler la méthode revalidate() ensuite
    Je parle français non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
           public void changerPanel(JPanel jp){
             getContentPane().removeAll();
             panel=jp;  
             getContentPane().add(panel);
             revalidate();
          }
    Le setVisible ne sert à rien par contre.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 26
    Par défaut
    Oui j'avais bien compris pour le revalidate, mais voilà mon problème...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
           public void changerPanel(JPanel jp){
             getContentPane().removeAll();
             panel=jp;  
             getContentPane().add(panel);
             revalidate();
          }
    voilà la réponse de ma console :

    FenetrePrincipal.java:53: cannot resolve symbol
    symbol : method revalidate ()
    location: class FenetrePrincipal
    revalidate();

    ma FenetrePrincipal extends JFrame.

  8. #8
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Oui pardon, c'est plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getContentPane().revalidate();
    Et pourquoi pas un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getContentPane().repaint();
    juste après.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 26
    Par défaut
    lorsque je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
             getContentPane().repaint();
    ça ne m'affiche pas mon JPanel mais un JPanel vide, du moins j'ai que du vide...

    et pour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
             getContentPane().revalidate();
    j'ai toujours le même message d'erreur.
    Peut être que mon erreur vient d'ailleur que ma méthode... je donne mon code complet au cas ou...

    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
     
       import java.awt.*;
       import java.awt.event.*;
       import javax.swing.*;
       import javax.swing.event.*;
     
     
        class FenetrePrincipal extends JFrame {
     
          JPanel panel;
          JMenuBar menuBar;
     
           FenetrePrincipal(){
     
             setTitle("@@@ Prophethy @@@");
             setSize(1024,768);
             setLocationRelativeTo(null);
             setResizable(false);
             menuBar=new MenuBar();
             setJMenuBar(menuBar);
             panel=new IntroPanel(this);
    			getContentPane().add(panel);
             setVisible(true);	
          }
           public void changerPanel(JPanel jp){
             getContentPane().removeAll();
             panel=jp;  
             getContentPane().add(panel);
             getContentPane().repaint()
          }
    }
    et voilà la class IntroPanel que je veux supprimer puis remettre pour mon test.

    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
     
       import java.awt.*;
       import java.awt.event.*;
       import javax.swing.*;
       import javax.swing.event.*;
     
        class IntroPanel extends JPanel implements KeyListener {
    	 	FenetrePrincipal vue;
     
           IntroPanel(FenetrePrincipal v){	
    		 	vue=v;
             JLabel lIntro=new JLabel(new   ImageIcon("images/cinematiques/introduction.gif"));
           	lIntro.setHorizontalAlignment(JLabel.CENTER);
    	add(lIntro);
    	addKeyListener(this);
          }
    		public void keyTyped(KeyEvent e){}
    		public void keyPressed(KeyEvent e){
                        vue.changerPanel(new IntroPanel(vue));
    		    System.out.println("On passel'introduction");
                    }
    		public void keyReleased(KeyEvent e){}		
        }

Discussions similaires

  1. [JPanel][LayoutManager] redéfinition de méthodes
    Par _KB_ dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 06/06/2006, 14h22
  2. [JPanel] méthode de destruction
    Par Invité dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 23/05/2006, 11h05
  3. JDesktop Pane et JPanel
    Par mrshoki dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 15/03/2006, 14h44
  4. [JPanel] quel méthode appelé lors du rafraichissement...
    Par lilou77 dans le forum Interfaces Graphiques en Java
    Réponses: 5
    Dernier message: 01/11/2005, 15h08
  5. Cryptage en C selon la méthode de césat
    Par shenron dans le forum C
    Réponses: 2
    Dernier message: 31/05/2002, 08h22

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