Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème d'affichage d'un JPanel

    14 mars 2019 à 12:05:14

    Bonjour,

    Je suis actuellement la partie consacrée aux JFrame du cours "Aprennez à programmer en JAVA" créé par Cyrille Herby.

    J'en suis arrivé à la partie où j'ajoute un Jpanel au ContentPane de ma JFrame. Problème, lors de l’exécution de ma fonction, le JPan ne s'affiche pas, et ce n'est que resizant la fenêtre que le JPan apparaît.

    J'avais déjà eu le problème en testant d'ajouter des TextField et autres et en cherchant sur différents forums, j'ai trouvé qu'il s'agissait d'un problème de mise à jour de la Frame et qu'il fallait mettre le setVisible(true) à la fin de la création de la JFrame.

    Je l'ai fait et le problème avait été résolut à ce moment là mais voila que ça recommence.

    Voici mon code, il ne diffère pas beaucoup de celui que Cyrille Herby démontre dans son cours. Merci d'avance pour vos réponses.

    import java.awt.*;
    import javax.swing.*;
    
    public class Fenetre extends JFrame{
    	
    	//Constructeur
    	public Fenetre() {
    		
    		//Définition de la taille de la fenêtre
    		int frameWidth = 800;
    		int frameHeight = 600;
    
    		//Création de la frame
    		this.setSize(frameWidth, frameHeight);
    		this.setLocationRelativeTo(null); //Centrer la fenêtre
    		this.setResizable(false); //Empêche de resize la fenêtre
    		this.setUndecorated(true); //retire les bordures et bouton de controle de la fenêtre
    		
    		//Création d'un panel
    		JPanel pan = new JPanel();
    		pan.setBackground(Color.red);
    		
    		//Alloue pan au ContentPan de la frame
    		this.setContentPane(pan);
    		
    		//Rend la frame visible, ne placer qu'à la fin
    		this.setVisible(true);
    	}
    }
    



    • Partager sur Facebook
    • Partager sur Twitter
      14 mars 2019 à 15:15:36

      Bonjour,

      C'est bizarre ce problème. Moi si je fais le code du cours :

      import java.awt.Color;
      
      import javax.swing.JButton;
      import javax.swing.JFrame;
      import javax.swing.JPanel;
      
      
      public class Basic2 {
      	public static void main(String[] args){
      
      		  Fenetre6 fen = new Fenetre6();
      	  
      		
      	  }
      }
      
       class Fenetre6 extends JFrame {
      	  public Fenetre6(){             
      	    this.setTitle("Ma première fenêtre Java");
      	    this.setSize(400, 100);
      	    this.setLocationRelativeTo(null);               
      	 
      	    //Instanciation d'un objet JPanel
      	    JPanel pan = new JPanel();
      	    //Définition de sa couleur de fond
      	    pan.setBackground(Color.ORANGE);        
      	    //On prévient notre JFrame que notre JPanel sera son content pane
      	    this.setContentPane(pan);               
      	    this.setVisible(true);
      	  }       
      	}

      Je n'ai pas de problème particulier sauf un léger décalage pour que la couleur s'affiche dans la frame lorsque je la redimensionne (et ça c'est dû au logiciel Eclipse et à la vitesse de calcul du processeur je pense). Ton problème peut  venir à priori d'une version de Java qui a un bug (moi j'utilise le JDK 10), de la vitesse de ton ordinateur, de ton IDE. Ce sont des idées, je n'ai peut-être pas la bonne réponse...

      • Partager sur Facebook
      • Partager sur Twitter
        14 mars 2019 à 21:24:58

        Salut, essaye d'ajouter

        this.repaint();
        this.revalidate();


        Après this.setVisible(true)

        Si ça ne fonctionne pas essaye de mettre

        this.repack();

        à la place

        • Partager sur Facebook
        • Partager sur Twitter
        Cordialement, l'homme qui te regarde par la fenêtre quand tu dors.
          15 mars 2019 à 10:34:53

          jojos38000 a écrit:

          Salut, essaye d'ajouter

          this.repaint();
          this.revalidate();

          Ca ne change rien.

          Si ça ne fonctionne pas essaye de mettre

          this.repack();

          la fonction repack() n'est pas connue.

          Pour ce qui est de la version de eclipse / de mon JDK. savez vous où je peux voir ça ?

          Je reprends le poste d'une autre personne dans ma boite du coup, je ne suis pas maître de ce qui est installé dessus.



          -
          Edité par PierreCoustance 15 mars 2019 à 10:37:50

          • Partager sur Facebook
          • Partager sur Twitter
            15 mars 2019 à 12:25:01

            PierreCoustance a écrit:

            jojos38000 a écrit:

            Salut, essaye d'ajouter

            this.repaint();
            this.revalidate();

            Ca ne change rien.

            Si ça ne fonctionne pas essaye de mettre

            this.repack();

            la fonction repack() n'est pas connue.

            Pour ce qui est de la version de eclipse / de mon JDK. savez vous où je peux voir ça ?

            Je reprends le poste d'une autre personne dans ma boite du coup, je ne suis pas maître de ce qui est installé dessus.



            -
            Edité par PierreCoustance il y a environ 1 heure

            Je suis désolé je me suis trompé ! Ce n'est pas 
            this.repack()


            mais

            this.pack()


            Pour la version d'eclipse dans la barre de menu en haut: "Help" > "About Eclipse IDE"

            Pour la version de Java: "Window" > "Prererences" > "Java" > "Installed JREs"

            -
            Edité par jojos38000 15 mars 2019 à 12:34:47

            • Partager sur Facebook
            • Partager sur Twitter
            Cordialement, l'homme qui te regarde par la fenêtre quand tu dors.

            Problème d'affichage d'un JPanel

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            • Editeur
            • Markdown