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 :

Probleme lors de l'affichage d'un Panel :(


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 146
    Par défaut Probleme lors de l'affichage d'un Panel :(
    salut a tous,
    Je suis entrain de developper une application Java avec Eclipse grace au Plugin Matisse.
    J'ai crée une permiere JFrame (qui comporte 2 boutons et un JPanel) et deux autres JPanel. Je voulais que lorsque je clique sur le bouton 1, le JPanel1 se charge dans le JPanel de la JFrame et de meme pour le bouton2. Mais malheursement rien ne s'affiche.
    Je vous donne le code :

    Ca c'est le code qui a été generé automatiquement par Matisse:
    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
    public MainForm() {
     
            initComponents();
     
        }
     
     
    	// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
    	private void initComponents() {
    		jPanel1 = new javax.swing.JPanel();
    		jButton1 = new javax.swing.JButton();
    		jButton2 = new javax.swing.JButton();
     
    		setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    		org.jdesktop.layout.GroupLayout jPanel1Layout = new org.jdesktop.layout.GroupLayout(
    				jPanel1);
    		jPanel1.setLayout(jPanel1Layout);
    		jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(
    				org.jdesktop.layout.GroupLayout.LEADING).add(0, 705,
    				Short.MAX_VALUE));
    		jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(
    				org.jdesktop.layout.GroupLayout.LEADING).add(0, 359,
    				Short.MAX_VALUE));
     
    		jButton1.setText("jButton1");
    		jButton1.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jButton1ActionPerformed(evt);
    			}
    		});
     
    		jButton2.setText("jButton2");
     
    		org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(
    				getContentPane());
    		getContentPane().setLayout(layout);
    		layout
    				.setHorizontalGroup(layout
    						.createParallelGroup(
    								org.jdesktop.layout.GroupLayout.LEADING)
    						.add(
    								layout
    										.createSequentialGroup()
    										.add(
    												layout
    														.createParallelGroup(
    																org.jdesktop.layout.GroupLayout.LEADING)
    														.add(
    																layout
    																		.createSequentialGroup()
    																		.add(
    																				20,
    																				20,
    																				20)
    																		.add(
    																				jButton1)
    																		.addPreferredGap(
    																				org.jdesktop.layout.LayoutStyle.RELATED)
    																		.add(
    																				jButton2))
    														.add(
    																org.jdesktop.layout.GroupLayout.TRAILING,
    																layout
    																		.createSequentialGroup()
    																		.addContainerGap()
    																		.add(
    																				jPanel1,
    																				org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
    																				org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
    																				Short.MAX_VALUE)))
    										.addContainerGap()));
    		layout.setVerticalGroup(layout.createParallelGroup(
    				org.jdesktop.layout.GroupLayout.LEADING).add(
    				layout.createSequentialGroup().add(
    						layout.createParallelGroup(
    								org.jdesktop.layout.GroupLayout.BASELINE).add(
    								jButton1).add(jButton2)).add(16, 16, 16).add(
    						jPanel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
    						org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
    						Short.MAX_VALUE).addContainerGap()));
    		pack();
    	}
    Et ca c'est l'actionPerformed du bouton 1 qui doit normalement afficher le JPanel1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
    	// TODO add your handling code here:
     
    	this.jPanel1.removeAll();
    	this.jPanel1.add(BorderLayout.CENTER,new Panel1());
    	this.jPanel1.revalidate();
     
    	}
    Aider moi svp et merci pour votre aide ...

  2. #2
    Membre expérimenté
    Inscrit en
    Janvier 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 257
    Par défaut
    Salut

    Il n'est fait mention nul part de la JFrame dans ton code, j'aimerais savoir si c'est l'objet "this" ?

    ++

  3. #3
    Membre expérimenté Avatar de g0up1l
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 341
    Par défaut
    Essaye de changer le 'revalidate' par un 'repaint'

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 146
    Par défaut
    Citation Envoyé par guis14
    Salut

    Il n'est fait mention nul part de la JFrame dans ton code, j'aimerais savoir si c'est l'objet "this" ?

    ++
    oui exactement c l'objet courant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class MainForm extends javax.swing.JFrame {

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 146
    Par défaut
    Citation Envoyé par g0up1l
    Essaye de changer le 'revalidate' par un 'repaint'
    je viens de l'essayer mais ca ne donne rien

  6. #6
    Membre expérimenté
    Inscrit en
    Janvier 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 257
    Par défaut
    Autre question, peux tu donner le code de Panel1 qui n'est pas JPanel1 si je comprend bien ...

  7. #7
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Par défaut
    Salut,

    dans ton actionPerformed, tu as inversé les arguments de la méthode add de ton JPanel.
    Il te faut mettre en premier le composant que tu ajoutes et ensuite les contraintes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    this.jPanel1.add(new Panel1(),BorderLayout.CENTER);
    Tu devrais regarder la JavaDoc, toutes les méthodes sont décrites.

  8. #8
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 146
    Par défaut
    Citation Envoyé par guis14
    Autre question, peux tu donner le code de Panel1 qui n'est pas JPanel1 si je comprend bien ...
    voici son code il est généré aussi par Matisse
    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
     
    public class Panel1 extends javax.swing.JPanel {
     
        /** Creates new form Panel1 */
        public Panel1() {
             initComponents();
        }
     
        /** This method is called from within the constructor to
         * initialize the form.
         * WARNING: Do NOT modify this code. The content of this method is
         * always regenerated by the Form Editor.
             */
    	// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
    	private void initComponents() {
    		jLabel1 = new javax.swing.JLabel();
     
    		jLabel1.setText("Je suis le Panel 1");
     
    		org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(
    				this);
    		this.setLayout(layout);
    		layout.setHorizontalGroup(layout.createParallelGroup(
    				org.jdesktop.layout.GroupLayout.LEADING).add(
    				layout.createSequentialGroup().add(138, 138, 138).add(jLabel1)
    						.addContainerGap(181, Short.MAX_VALUE)));
    		layout.setVerticalGroup(layout.createParallelGroup(
    				org.jdesktop.layout.GroupLayout.LEADING).add(
    				layout.createSequentialGroup().addContainerGap().add(jLabel1)
    						.addContainerGap(275, Short.MAX_VALUE)));
    	}// </editor-fold>//GEN-END:initComponents
     
     
    // Variables declaration - do not modify//GEN-BEGIN:variables
    	private javax.swing.JLabel jLabel1;
    	// End of variables declaration//GEN-END:variables
     
    }

  9. #9
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 146
    Par défaut
    Citation Envoyé par Fifan31
    Salut,

    dans ton actionPerformed, tu as inversé les arguments de la méthode add de ton JPanel.
    Il te faut mettre en premier le composant que tu ajoutes et ensuite les contraintes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    this.jPanel1.add(new Panel1(),BorderLayout.CENTER);
    Tu devrais regarder la JavaDoc, toutes les méthodes sont décrites.
    Je l'ai changé mais ca donne rien

  10. #10
    Membre expérimenté
    Inscrit en
    Janvier 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 257
    Par défaut
    Bon je vois rien comme sa de but en blanc par contre peux tu essayer de mettre un println("coucou") dans l'action performed du bouton pour etre sur qu'il passe dedans...
    Si il passe dedans essai juste d'ajouter un objet au panel au lieu de faire tout le traitement un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.Jpanel1.add(new JLabel("coucou"));
    voir si sa sa marche pour un peu mieu cibler le probleme ...

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Par défaut
    Comment etes tu sur que ton panel n'est pas affiché ? je dis ca car il n'est peut etre mais en tout petit lol...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Panel1 panel1 = new Panel1();
    panel1.setBorder(BorderFactory.createLineBorder(Color.red)); 
    this.jPanel1.add(BorderLayout.CENTER,panel1);
    this.jPanel1.revalidate();
    System.out.println("width = "+panel1.getWidth()+", heigh ="+panel1.getHeight());
    le code n'a pas été compilé, alors il doit y avoir des erreurs...
    mais vérifie les dimensions de ton panel

  12. #12
    Membre expérimenté Avatar de g0up1l
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 341
    Par défaut
    J'ai l'impression que Panel1 n'appelle pas le constructeur de la classe JPanel.

  13. #13
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 146
    Par défaut
    Citation Envoyé par lilou77
    Comment etes tu sur que ton panel n'est pas affiché ? je dis ca car il n'est peut etre mais en tout petit lol...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Panel1 panel1 = new Panel1();
    panel1.setBorder(BorderFactory.createLineBorder(Color.red)); 
    this.jPanel1.add(BorderLayout.CENTER,panel1);
    this.jPanel1.revalidate();
    System.out.println("width = "+panel1.getWidth()+", heigh ="+panel1.getHeight());
    le code n'a pas été compilé, alors il doit y avoir des erreurs...
    mais vérifie les dimensions de ton panel

    Je viens d'essayer ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
    	// TODO add your handling code here:
    	Panel1 p = new Panel1();
     
    	this.jPanel1.removeAll();
    	//p.setBorder(BorderFactory.createLineBorder(Color.red));
     
    	this.jPanel1.add(BorderLayout.CENTER,p);
    	this.jPanel1.revalidate();
    	System.out.println("width = "+p.getWidth()+", heigh ="+p.getHeight());
    	this.jPanel1.repaint();
     
    	}
    et j'ai commenté p.setBorder(BorderFactory.createLineBorder(Color.red)); car eclipse me dit qu'il y a une erreur.

    Lors de l'execution et lorsque je clique sur le bouton, j'ai dans la console ceci :
    width = 0, heigh =0

  14. #14
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 146
    Par défaut
    Je crois que j'ai reglé le problème
    j'ai fait un panel1.setSize(100,300) et j'ai enfin obtenu mon panel !!
    Merci beacoup pour votre aide.

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

Discussions similaires

  1. Probleme d'affichage d'un panel dans un JScrollPane
    Par aymenroma dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 25/06/2007, 16h38
  2. Réponses: 1
    Dernier message: 13/11/2006, 18h37
  3. [MYSQL] Probleme lors de la compilation
    Par Nasky dans le forum Autres éditeurs
    Réponses: 10
    Dernier message: 24/02/2004, 17h04
  4. probleme lors du passage de paramètre
    Par maxmj dans le forum ASP
    Réponses: 4
    Dernier message: 18/11/2003, 00h15
  5. problem lors de l'ecriture d'un fichier
    Par gemai dans le forum C
    Réponses: 20
    Dernier message: 29/08/2003, 15h01

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