Partage
  • Partager sur Facebook
  • Partager sur Twitter

le texte ne s'affiche pas

Sujet résolu
    5 janvier 2009 à 13:18:22

    Bonjour,
    voilà : j'aimerais afficher une phrase sur fenêtre, mais rien ne se passe :
    import java.awt.Color;
    import java.awt.LayoutManager;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JFrame;
     
    public class Fenetre extends JFrame{
    	
     private static final LayoutManager FlowLayout = null;
     private JLabel label = new JLabel("Le JLabel");
    
    public Fenetre () {
    	
    	this.setTitle("Fichier de Traitement de Textes V.D.");
    	this.setSize( 1280 , 990 );
    	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	
    	
    	JPanel pan = new JPanel();
    	pan.setBackground(Color.ORANGE);
    	pan.setLayout(FlowLayout);
    	
    	JLabel texte1 = new JLabel("Mon deuxième JLabel");
    	pan.add(texte1);
    
    		
    		this.setContentPane(pan);
    		this.setVisible(true);
    	
     }
    
    }
    


    Merci et à bientôt :)
    • Partager sur Facebook
    • Partager sur Twitter
      5 janvier 2009 à 14:02:05

      il ne faut pas faire :

      pan.add(texte1);
      

      mais :

      getContentPane().add(texte1);
      
      • Partager sur Facebook
      • Partager sur Twitter
        5 janvier 2009 à 14:05:51

        je viens de tester.. le problème est toujours le même :)

        Edit :

        import java.awt.Color;
        import java.awt.LayoutManager;
        import javax.swing.JLabel;
        import javax.swing.JPanel;
        import javax.swing.JFrame;
         
        public class Fenetre extends JFrame{
        	
         private static final LayoutManager FlowLayout = null;
        
        public Fenetre () {
        	
        	this.setTitle("Fichier de Traitement de Textes V.D.");
        	this.setSize( 1280 , 990 );
        	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        	
        	
        	JPanel pan = new JPanel();
        	pan.setBackground(Color.ORANGE);
        	pan.setLayout(FlowLayout);
        	
        	JLabel texte1 = new JLabel("Mon deuxième JLabel");
         pan.add(texte1);
        
        
        		
        		this.setContentPane(pan);
        		this.setVisible(true);
        	
         }
        
        }
        
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          5 janvier 2009 à 14:14:34

          Citation : Erosquare

          il ne faut pas faire :

          pan.add(texte1);
          


          mais :

          getContentPane().add(texte1);
          

          Faux, depuis la version 4 ou 5 de Java tu peux le faire
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            5 janvier 2009 à 14:16:05

            Non, le problème vient du pan.setLayout(FlowLayout); avec FlowLayout = null.
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              5 janvier 2009 à 14:17:10

              oui, il n'y a aucun gestionnaire de disposition....
              • Partager sur Facebook
              • Partager sur Twitter
                5 janvier 2009 à 14:19:12

                Je dois donc créer un gestionnaire de position?
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  5 janvier 2009 à 14:23:07

                  non juste instancier ton objet FlowLayout
                  • Partager sur Facebook
                  • Partager sur Twitter
                    5 janvier 2009 à 14:27:28

                    Je ne m'étais interessé qu'à la manière dont tu gérais ton JLabel mais en regardant ton code plusieurs choses me choquent :

                    - Pourquoi tu mets un LayoutManager en attribut de classe? Tu sais que ton FlowLayout est une variable là et non une classe? D'ailleurs tu n'as pas importé la bonne classe pour FlowLayout.
                    - Pourquoi tu crées un JPanel alors que tu n'en as pas besoin?
                    - Pourquoi tu modifies le ContentPane() alors que tu n'en as pas besoin?

                    Citation : Pas de titre

                    Faux, depuis la version 4 ou 5 de Java tu peux le faire


                    Faux, tu dois mettre les composants dans le conteneur de la couche ContentPane.

                    Voici ta classe corrigée :
                    import java.awt.*;
                    import javax.swing.*;
                     
                    public class Fenetre extends JFrame{
                    	
                    	public Fenetre () {
                    		
                    		this.setTitle("Fichier de Traitement de Textes V.D.");
                    		this.setSize( 1280 , 990 );
                    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    		getContentPane().setBackground(Color.ORANGE);
                    		
                    		JLabel texte1 = new JLabel("Mon deuxième JLabel");
                    		getContentPane().add(texte1);
                    	}
                    	
                    	public static void main(String args[]){
                    		Fenetre fen = new Fenetre();
                    		fen.setVisible(true);
                    	}
                    
                    }
                    
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      5 janvier 2009 à 14:51:22

                      Ok Ok enfin pour ma part je fait le add directement et le code marche parfaitement...
                      • Partager sur Facebook
                      • Partager sur Twitter
                        5 janvier 2009 à 14:58:17

                        Citation : @Strato@

                        Ok Ok enfin pour ma part je fait le add directement et le code marche parfaitement...


                        Edit : J'ai compilé en 1.4.2, effectivement tu as raison je me suis trompé. Je viens de regarder un coup la doc :D A force de travailler avec différents JDK on finit par s'embrouiller les princeaux :p Par contre tout ce que j'ai dit plus haut reste valable pour le JDK 1.4.2 :

                        JD 1.4.2 :
                        http://java.sun.com/j2se/1.4.2/docs/ap [...] g/JFrame.html
                        This is different from the AWT Frame case. For example, to add a child to an AWT frame you'd write:

                        frame.add(child);


                        However using JFrame you need to add the child to the JFrame's content pane instead:

                        frame.getContentPane().add(child);

                        JDK 5:
                        http://java.sun.com/j2se/1.5.0/docs/ap [...] g/JFrame.html

                        As a conveniance add and its variants, remove and setLayout have been overridden to forward to the contentPane as necessary. This means you can write:

                        frame.add(child);
                        • Partager sur Facebook
                        • Partager sur Twitter
                          5 janvier 2009 à 17:52:43

                          Citation : Erosquare

                          Citation : Pas de titre

                          Faux, depuis la version 4 ou 5 de Java tu peux le faire


                          Faux, tu dois mettre les composants dans le conteneur de la couche ContentPane.


                          Depuis la version 5 c'est n'est pas obligatoire de le faire.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            5 janvier 2009 à 18:15:56

                            Bref, ca marche maintenant :)
                            merci à tous :)
                            • Partager sur Facebook
                            • Partager sur Twitter
                              5 janvier 2009 à 18:43:25

                              Citation : colibri

                              Citation : Erosquare

                              Citation : Pas de titre

                              Faux, depuis la version 4 ou 5 de Java tu peux le faire


                              Faux, tu dois mettre les composants dans le conteneur de la couche ContentPane.


                              Depuis la version 4 c'est n'est pas obligatoire de le faire.


                              Si tu aurais regardé mon correctif, c'est depuis la version 5 qu'on est plus obligé d'invoquer le getContentPane(). Dans le JDK 1.4.2, c'est obligatoire et je parle en connaissance de cause puisque je travaille essentiellement sur le JDK 1.4.2 (d'où ma confusion) mais ça n'exclut en rien d'utiliser le getContentPane() dans les JDK 5+. Exemple concret (Merci à Strato pour le lien) :

                              http://java.sun.com/developer/JDCTechT [...] tt1102.html#2
                              • Partager sur Facebook
                              • Partager sur Twitter
                                5 janvier 2009 à 18:53:17

                                arf, je me suis gouré de version, et je sais bien qu'en version 4 on utilise un ContentPane étant donné que j'ai appris à programmer en avec cette version de Java.
                                • Partager sur Facebook
                                • Partager sur Twitter

                                le texte ne s'affiche pas

                                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                • Editeur
                                • Markdown