Partage
  • Partager sur Facebook
  • Partager sur Twitter

Repaint JMenuBar et JPanel

Sujet résolu
    19 novembre 2010 à 22:50:00

    Bonsoir,
    J'ai rencontré un léger problème en déroulant un JMenu devant un JPanel sur lequel est dessiné une grille. La zone de déroulement de mon JMenu efface ce qui était dessiné sur cette grille.
    J'ai bien essayé de rafraichir ma grille puis mes composants (par différents moyens notamment des événements souris) mais rien n'y fait, soit mon JPanel est peint par dessus mes JMenuItem, soit mon JPanel est en partie effacé

    Voila une simplification de mon code :

    Je m'en remets à vos conseils
    Merci d'avance

    import java.awt.Graphics;
    
    public class NewJFrame extends javax.swing.JFrame
    {   
        public NewJFrame()
        {
            initComponents();
        }
    
        public void paint(Graphics g)
        {
            super.paint(g);
            
            g=jPanel1.getGraphics();
            g.fillRect(0,0, jPanel1.getWidth(),jPanel1.getHeight());
        }
    
        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">
        private void initComponents() {
    
            jPanel1 = new javax.swing.JPanel();
            jMenuBar1 = new javax.swing.JMenuBar();
            jMenu1 = new javax.swing.JMenu();
            jMenuItem1 = new javax.swing.JMenuItem();
            jMenuItem2 = new javax.swing.JMenuItem();
            jMenuItem3 = new javax.swing.JMenuItem();
            jMenuItem4 = new javax.swing.JMenuItem();
            jMenu2 = new javax.swing.JMenu();
            jMenuItem5 = new javax.swing.JMenuItem();
            jMenuItem6 = new javax.swing.JMenuItem();
            jMenuItem7 = new javax.swing.JMenuItem();
            jMenuItem8 = new javax.swing.JMenuItem();
    
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    
            javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
            jPanel1.setLayout(jPanel1Layout);
            jPanel1Layout.setHorizontalGroup(
                jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGap(0, 400, Short.MAX_VALUE)
            );
            jPanel1Layout.setVerticalGroup(
                jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGap(0, 279, Short.MAX_VALUE)
            );
    
            getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
    
            jMenu1.setText("File");
    
            jMenuItem1.setText("jMenuItem1");
            jMenu1.add(jMenuItem1);
    
            jMenuItem2.setText("jMenuItem2");
            jMenu1.add(jMenuItem2);
    
            jMenuItem3.setText("jMenuItem3");
            jMenu1.add(jMenuItem3);
    
            jMenuItem4.setText("jMenuItem4");
            jMenu1.add(jMenuItem4);
    
            jMenuBar1.add(jMenu1);
    
            jMenu2.setText("Edit");
    
            jMenuItem5.setText("jMenuItem5");
            jMenu2.add(jMenuItem5);
    
            jMenuItem6.setText("jMenuItem6");
            jMenu2.add(jMenuItem6);
    
            jMenuItem7.setText("jMenuItem7");
            jMenu2.add(jMenuItem7);
    
            jMenuItem8.setText("jMenuItem8");
            jMenu2.add(jMenuItem8);
    
            jMenuBar1.add(jMenu2);
    
            setJMenuBar(jMenuBar1);
    
            pack();
        }// </editor-fold>
    
        public static void main(String args[])
        {
            java.awt.EventQueue.invokeLater(new Runnable()
            {
                public void run()
                {
                    new NewJFrame().setVisible(true);
                }
            });
        }
    
        // Variables declaration - do not modify
        private javax.swing.JMenu jMenu1;
        private javax.swing.JMenu jMenu2;
        private javax.swing.JMenuBar jMenuBar1;
        private javax.swing.JMenuItem jMenuItem1;
        private javax.swing.JMenuItem jMenuItem2;
        private javax.swing.JMenuItem jMenuItem3;
        private javax.swing.JMenuItem jMenuItem4;
        private javax.swing.JMenuItem jMenuItem5;
        private javax.swing.JMenuItem jMenuItem6;
        private javax.swing.JMenuItem jMenuItem7;
        private javax.swing.JMenuItem jMenuItem8;
        private javax.swing.JPanel jPanel1;
        // End of variables declaration
    }
    
    • Partager sur Facebook
    • Partager sur Twitter
      21 novembre 2010 à 0:52:28

      Up j'ai vraiment besoin d'un coup de pouce

      Merci ;)
      • Partager sur Facebook
      • Partager sur Twitter
        21 novembre 2010 à 9:05:38

        Bonjour,

        dans ton paint(Graphics g) tu devrais ajouter " super.paintComponents(g); " ou mettre
        un "update(g)"

        DMF
        • Partager sur Facebook
        • Partager sur Twitter
          21 novembre 2010 à 12:38:37

          Alors, update(g); me provoque une exception (logique étant donné que update appelle paint) :
          Concernant paintComponents si dans mon paint(..) je le mets avant g.fillRect, le jPanel1 recouvre mon JMenu et si je mets paintComponents après mon JPanel1 n'est pas dessiné

          Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError
          at sun.font.FontManager.getFont2D(Native Method)
          at sun.java2d.SunGraphics2D.checkFontInfo(SunGraphics2D.java:580)
          at sun.java2d.SunGraphics2D.getFontInfo(SunGraphics2D.java:740)
          at sun.java2d.pipe.GlyphListPipe.drawString(GlyphListPipe.java:32)
          at sun.java2d.pipe.ValidatePipe.drawString(ValidatePipe.java:147)
          at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:2753)
          at sun.swing.SwingUtilities2.drawString(SwingUtilities2.java:489)
          at sun.swing.SwingUtilities2.drawStringUnderlineCharAt(SwingUtilities2.java:520)
          at javax.swing.plaf.basic.BasicMenuItemUI.paintText(BasicMenuItemUI.java:843)
          at javax.swing.plaf.basic.BasicMenuItemUI.paintMenuItem(BasicMenuItemUI.java:713)
          at javax.swing.plaf.basic.BasicMenuItemUI.paint(BasicMenuItemUI.java:592)
          at javax.swing.plaf.basic.BasicMenuItemUI.update(BasicMenuItemUI.java:588)
          at javax.swing.JComponent.paintComponent(JComponent.java:751)
          at javax.swing.JComponent.paint(JComponent.java:1017)
          at javax.swing.JComponent.paintChildren(JComponent.java:852)
          at javax.swing.JComponent.paint(JComponent.java:1026)
          at javax.swing.JComponent.paintChildren(JComponent.java:852)
          at javax.swing.JComponent.paint(JComponent.java:1026)
          at javax.swing.JLayeredPane.paint(JLayeredPane.java:567)
          at javax.swing.JComponent.paintChildren(JComponent.java:852)
          at javax.swing.JComponent.paintToOffscreen(JComponent.java:5119)
          at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1475)
          at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1406)
          at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:294)
          at javax.swing.RepaintManager.paint(RepaintManager.java:1220)
          at javax.swing.JComponent.paint(JComponent.java:1003)
          at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:21)
          at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:60)
          at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:97)
          at java.awt.Container.paint(Container.java:1780)
          at NewJFrame.paint(NewJFrame.java:12)
          at javax.swing.JFrame.update(JFrame.java:453)
          at NewJFrame.paint(NewJFrame.java:16)
          at javax.swing.JFrame.update(JFrame.java:453)
          at NewJFrame.paint(NewJFrame.java:16)
          • Partager sur Facebook
          • Partager sur Twitter
            22 novembre 2010 à 19:13:55

            Bonjour Luwangel,

            voilà comment je fais :
            public void update( Graphics g ) {
                 super.paintComponents(g);
                 GererEcran.GererEcran();
                 this.setBounds(0, 0, LargeurEcran, HauteurEcran);
                 testEcran=1;//la gestion de l'ecrand est faite
                 Code();
            }
            public void paint( Graphics g ) {
                Dessin.AfficherDessin();// affichage de l'image
                    update( g );
            }
            public void repaint( Graphics g ) {
                Dessin.AfficherDessin();// affichage de l'image pour le zoom
            }
            


            j'ai pas trié,

            A+

            DMF
            • Partager sur Facebook
            • Partager sur Twitter
              22 novembre 2010 à 23:47:10

              Salut,
              Merci d'être passé :D
              Alors tes méthodes combinées à mes jMenuItemXMouseExited fonctionnent, à un détail près, ce que j'affiche sur mon JPanel passe à la trappe

              J'aimerais qu'une fois le JMenu quitté, "les traces", que le JMenu laisse, disparaissent et que le JPanel soit toujours noir (actuellement il est coloré par défaut)

              private void jMenuItem5MouseExited(java.awt.event.MouseEvent evt) {                                       
                      repaint();
              }                   
              
              public void update( Graphics g )
                  {
                       super.paintComponents(g);
                       this.setBounds(100, 100, this.getWidth(), this.getHeight());
                       //testEcran=1;//la gestion de l'ecrand est faite      <---- je n'ai pas très bien compris ça
              
                  }
              
                  public void paint( Graphics g )
                  {
              
                      g.fillRect(0,0, jPanel1.getWidth(),jPanel1.getHeight());
                      update(g);
                  }
              


              Luwangel
              • Partager sur Facebook
              • Partager sur Twitter
                23 novembre 2010 à 6:37:16

                Bonjour,

                essai ceci :

                public void repaint( Graphics g ) {
                  g.clearRect(0,0, jPanel1.getWidth(),jPanel1.getHeight()); 
                }
                


                ou met ton "repaint();" à la fin et non pas au début pour tester

                ces lignes ne sont pas utiles pour toi :


                //this.setBounds(100, 100, this.getWidth(), this.getHeight());// sert au replacement en cas de déplacement
                //testEcran=1;//la gestion de l'ecrand est faite (gestion perso)
                


                DMF
                • Partager sur Facebook
                • Partager sur Twitter
                  23 novembre 2010 à 14:01:50

                  clearRect peut fonctionner dans ce cas là, sauf que ce cas là est une version simplifiée de mon projet dans lequel mon JPanel n'est plus noir, mais représente une grille :(
                  • Partager sur Facebook
                  • Partager sur Twitter
                    23 novembre 2010 à 16:37:39

                    Bonjour Luwangel,

                    essai ceci (pas testé)

                    private void jMenuItem5MouseExited(java.awt.event.MouseEvent evt) {                                       
                            repaint();
                           validate();
                    }
                    


                    DMF
                    • Partager sur Facebook
                    • Partager sur Twitter
                      23 novembre 2010 à 17:19:07

                      Bonsoir,
                      J'avais déjà testé, sans succès
                      J'ai réessayé mais ça ne fonctionne pas.
                      Mon JPanel et repeint devant ma JMenuBar et pourtant il devrait être derrière... :(

                      Luwangel
                      • Partager sur Facebook
                      • Partager sur Twitter
                        23 novembre 2010 à 19:17:22

                        Bonsoir Luwangel,

                        Post le code de ton jPanel, on va regarder si on peut trouver une solution :)

                        là, il n'y a pas grand monde dans les "pro du java" pour venir t'aider :(

                        "Solidarité avec les codeurs Bloqués", serait un bon slogan !! non ??

                        DMF
                        • Partager sur Facebook
                        • Partager sur Twitter
                          23 novembre 2010 à 19:49:08

                          je te dé-conseil de redéfinir la méthode paint dans un frame generé par netbeans.

                          Par contre tu devrais faire un JPanel pour le quelle tu redéfinira la methode paintComponent();

                          et tu ajoutera se panel dans ta JFrame.

                          Bonne chance
                          • Partager sur Facebook
                          • Partager sur Twitter
                            23 novembre 2010 à 23:55:32

                            Désolé de poster aussi tard

                            Ligarnes, je ne vois pas vraiment comment faire, peux tu préciser ?

                            Mes respects à celui qui réussira ;)

                            import java.awt.Color;
                            import java.awt.Graphics;
                            
                            public class NewJFrame extends javax.swing.JFrame
                            {   
                                public NewJFrame()
                                {
                                    initComponents();
                                    
                                }
                            /* Mon ancienne méthode paint
                                public void paint(Graphics g)
                                {
                                    super.paint(g);
                                    g=jPanel1.getGraphics();
                                    g.fillRect(0,0, jPanel1.getWidth(),jPanel1.getHeight());
                            
                                }
                                */
                                public void update( Graphics g )
                                {
                                     super.paintComponents(g);
                            
                                     //Salve de tests...
                                     //g=jPanel1.getGraphics();
                                     //g.fillRect(0,0, jPanel1.getWidth(),jPanel1.getHeight());
                                     /*jMenuItem1.update(jMenuItem1.getGraphics());
                                     jMenuItem2.update(jMenuItem2.getGraphics());
                                     jMenuItem3.update(jMenuItem3.getGraphics());
                                     jMenuItem4.update(jMenuItem4.getGraphics());
                                     jMenuItem5.update(jMenuItem5.getGraphics());
                                     jMenuItem6.update(jMenuItem6.getGraphics());
                                     jMenuItem7.update(jMenuItem7.getGraphics());
                                     jMenuItem8.update(jMenuItem8.getGraphics());*/
                                }
                            
                                public void paint( Graphics g )
                                {             
                                    update(g);
                                    g.setColor(Color.BLUE);
                                    g=jPanel1.getGraphics();
                                    g.fillRect(0,0, jPanel1.getWidth(),jPanel1.getHeight());
                                    update(this.getGraphics());
                            
                                }
                            /*
                                public void repaint( Graphics g )
                                {
                                    g=jPanel1.getGraphics();
                                    g.fillRect(0,0, jPanel1.getWidth(),jPanel1.getHeight());        
                                }
                            */
                            
                            
                                @SuppressWarnings("unchecked")
                                // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
                                private void initComponents() {
                            
                                    jPanel1 = new javax.swing.JPanel();
                                    jMenuBar1 = new javax.swing.JMenuBar();
                                    jMenu1 = new javax.swing.JMenu();
                                    jMenuItem1 = new javax.swing.JMenuItem();
                                    jMenuItem2 = new javax.swing.JMenuItem();
                                    jMenuItem3 = new javax.swing.JMenuItem();
                                    jMenuItem4 = new javax.swing.JMenuItem();
                                    jMenu2 = new javax.swing.JMenu();
                                    jMenuItem5 = new javax.swing.JMenuItem();
                                    jMenuItem6 = new javax.swing.JMenuItem();
                                    jMenuItem7 = new javax.swing.JMenuItem();
                                    jMenuItem8 = new javax.swing.JMenuItem();
                            
                                    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
                            
                                    jPanel1.setBackground(new java.awt.Color(255, 0, 0));
                            
                                    javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
                                    jPanel1.setLayout(jPanel1Layout);
                                    jPanel1Layout.setHorizontalGroup(
                                        jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                        .addGap(0, 400, Short.MAX_VALUE)
                                    );
                                    jPanel1Layout.setVerticalGroup(
                                        jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                        .addGap(0, 279, Short.MAX_VALUE)
                                    );
                            
                                    getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
                            
                                    jMenu1.setText("File");
                            
                                    jMenuItem1.setText("jMenuItem1");
                                    jMenuItem1.addMouseListener(new java.awt.event.MouseAdapter() {
                                        public void mouseExited(java.awt.event.MouseEvent evt) {
                                            jMenuItem1MouseExited(evt);
                                        }
                                    });
                                    jMenu1.add(jMenuItem1);
                            
                                    jMenuItem2.setText("jMenuItem2");
                                    jMenuItem2.addMouseListener(new java.awt.event.MouseAdapter() {
                                        public void mouseExited(java.awt.event.MouseEvent evt) {
                                            jMenuItem2MouseExited(evt);
                                        }
                                    });
                                    jMenu1.add(jMenuItem2);
                            
                                    jMenuItem3.setText("jMenuItem3");
                                    jMenuItem3.addMouseListener(new java.awt.event.MouseAdapter() {
                                        public void mouseExited(java.awt.event.MouseEvent evt) {
                                            jMenuItem3MouseExited(evt);
                                        }
                                    });
                                    jMenu1.add(jMenuItem3);
                            
                                    jMenuItem4.setText("jMenuItem4");
                                    jMenuItem4.addMouseListener(new java.awt.event.MouseAdapter() {
                                        public void mouseExited(java.awt.event.MouseEvent evt) {
                                            jMenuItem4MouseExited(evt);
                                        }
                                    });
                                    jMenu1.add(jMenuItem4);
                            
                                    jMenuBar1.add(jMenu1);
                            
                                    jMenu2.setText("Edit");
                            
                                    jMenuItem5.setText("jMenuItem5");
                                    jMenuItem5.addMouseListener(new java.awt.event.MouseAdapter() {
                                        public void mouseExited(java.awt.event.MouseEvent evt) {
                                            jMenuItem5MouseExited(evt);
                                        }
                                    });
                                    jMenu2.add(jMenuItem5);
                            
                                    jMenuItem6.setText("jMenuItem6");
                                    jMenuItem6.addMouseListener(new java.awt.event.MouseAdapter() {
                                        public void mouseExited(java.awt.event.MouseEvent evt) {
                                            jMenuItem6MouseExited(evt);
                                        }
                                    });
                                    jMenu2.add(jMenuItem6);
                            
                                    jMenuItem7.setText("jMenuItem7");
                                    jMenuItem7.addMouseListener(new java.awt.event.MouseAdapter() {
                                        public void mouseExited(java.awt.event.MouseEvent evt) {
                                            jMenuItem7MouseExited(evt);
                                        }
                                    });
                                    jMenu2.add(jMenuItem7);
                            
                                    jMenuItem8.setText("jMenuItem8");
                                    jMenuItem8.addMouseListener(new java.awt.event.MouseAdapter() {
                                        public void mouseExited(java.awt.event.MouseEvent evt) {
                                            jMenuItem8MouseExited(evt);
                                        }
                                    });
                                    jMenu2.add(jMenuItem8);
                            
                                    jMenuBar1.add(jMenu2);
                            
                                    setJMenuBar(jMenuBar1);
                            
                                    pack();
                                }// </editor-fold>                        
                            
                                private void jMenuItem5MouseExited(java.awt.event.MouseEvent evt) {                                       
                                    repaint();
                                }                                      
                            
                                private void jMenuItem6MouseExited(java.awt.event.MouseEvent evt) {                                       
                                    repaint();
                                }                                      
                            
                                private void jMenuItem7MouseExited(java.awt.event.MouseEvent evt) {                                       
                                    repaint();
                                }                                      
                            
                                private void jMenuItem8MouseExited(java.awt.event.MouseEvent evt) {                                       
                                    repaint();
                                }                                      
                            
                                private void jMenuItem1MouseExited(java.awt.event.MouseEvent evt) {                                       
                                    repaint();
                                    jMenu1.validate();
                                    jMenuItem1.validate();
                                }                                      
                            
                                private void jMenuItem2MouseExited(java.awt.event.MouseEvent evt) {                                       
                                    repaint();
                                    jMenu1.validate();
                                    jMenuItem2.validate();
                            }                                      
                            
                                private void jMenuItem3MouseExited(java.awt.event.MouseEvent evt) {                                       
                                    repaint();
                                    jMenu1.validate();
                                    jMenuItem3.validate();
                            }                                      
                            
                                private void jMenuItem4MouseExited(java.awt.event.MouseEvent evt) {                                       
                                    repaint();
                                    jMenu1.validate();
                                    jMenuItem4.validate();
                            }                                      
                            
                                public static void main(String args[])
                                {
                                    java.awt.EventQueue.invokeLater(new Runnable()
                                    {
                                        public void run()
                                        {
                                            new NewJFrame().setVisible(true);
                                        }
                                    });
                                }
                            
                                // Variables declaration - do not modify                     
                                private javax.swing.JMenu jMenu1;
                                private javax.swing.JMenu jMenu2;
                                private javax.swing.JMenuBar jMenuBar1;
                                private javax.swing.JMenuItem jMenuItem1;
                                private javax.swing.JMenuItem jMenuItem2;
                                private javax.swing.JMenuItem jMenuItem3;
                                private javax.swing.JMenuItem jMenuItem4;
                                private javax.swing.JMenuItem jMenuItem5;
                                private javax.swing.JMenuItem jMenuItem6;
                                private javax.swing.JMenuItem jMenuItem7;
                                private javax.swing.JMenuItem jMenuItem8;
                                private javax.swing.JPanel jPanel1;
                                // End of variables declaration                   
                            }
                            
                            • Partager sur Facebook
                            • Partager sur Twitter
                              24 novembre 2010 à 8:48:43

                              En faite la question que je me pose s'est pourquoi tu veux ré-implémenté la methode update et paint ?
                              • Partager sur Facebook
                              • Partager sur Twitter
                                24 novembre 2010 à 12:54:25

                                Je veux les implémenter pour afficher une grille en arrière plan dans mon projet (aucun problème pour ça), et je veux qu'en utilisant mes JMenu, ils n'effacent pas ma grille :)
                                • Partager sur Facebook
                                • Partager sur Twitter
                                Anonyme
                                  24 novembre 2010 à 13:37:06

                                  Salut Luwangel,

                                  comme le dit Ligarnes, ta grille doit-être défini dans une classe indépendante qui hérite de JPanel.

                                  Dans cette nouvelle classe, tu redéfinis la méthode paintComponent (ne pas oublier que la première instructions de cette méthode doit-être super.paintComponent(g): )afin de dessiner ta grille.

                                  Tu crée un JFrame auquel tu ajouter les menus ainsi que le panel qui redessine ta grille.

                                  Et le tour est joué.

                                  J'ai pris la liberté de modifier ton code afin que tu vois comment agencer le tout.

                                  Nouvelle Classe JPanel qui dessine ta grille.
                                  import java.awt.Color;
                                  import java.awt.Dimension;
                                  import java.awt.Graphics;
                                  
                                  import javax.swing.JPanel;
                                  
                                  
                                  public class MonPanel extends JPanel {
                                  
                                  	private static final long serialVersionUID = 3930652123269292709L;
                                  
                                  	 
                                  	public MonPanel() {
                                  		  javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(this);
                                  	        setLayout(jPanel1Layout);
                                  	        setPreferredSize(new Dimension(200,200));
                                  	        setBackground(Color.WHITE);
                                  	}
                                  	
                                  	public void paintComponent(Graphics g)
                                      {
                                          super.paintComponent(g);
                                          
                                         g.drawString("La chaine ne s'efface plus", 20, 20);
                                      }
                                  
                                  }
                                  


                                  La JFrame pour agencer le tout

                                  public class NewJFrame extends javax.swing.JFrame
                                  {   
                                  	private static final long serialVersionUID = -2237993324868407110L;
                                  	public NewJFrame()
                                      {
                                          initComponents();
                                      }
                                  
                                      
                                      private void initComponents() {
                                  
                                          MonPanel jPanel1 = new MonPanel();
                                          jMenuBar1 = new javax.swing.JMenuBar();
                                          jMenu1 = new javax.swing.JMenu();
                                          jMenuItem1 = new javax.swing.JMenuItem();
                                          jMenuItem2 = new javax.swing.JMenuItem();
                                          jMenuItem3 = new javax.swing.JMenuItem();
                                          jMenuItem4 = new javax.swing.JMenuItem();
                                          jMenu2 = new javax.swing.JMenu();
                                          jMenuItem5 = new javax.swing.JMenuItem();
                                          jMenuItem6 = new javax.swing.JMenuItem();
                                          jMenuItem7 = new javax.swing.JMenuItem();
                                          jMenuItem8 = new javax.swing.JMenuItem();
                                  
                                          setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
                                          javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
                                          jPanel1.setLayout(jPanel1Layout);
                                          jPanel1Layout.setHorizontalGroup(
                                              jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                              .addGap(0, 400, Short.MAX_VALUE)
                                          );
                                          jPanel1Layout.setVerticalGroup(
                                              jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                              .addGap(0, 279, Short.MAX_VALUE)
                                          );
                                  
                                        
                                       //   setLayout(new BorderLayout());
                                          getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
                                  
                                          jMenu1.setText("File");
                                  
                                          jMenuItem1.setText("jMenuItem1");
                                          jMenu1.add(jMenuItem1);
                                  
                                          jMenuItem2.setText("jMenuItem2");
                                          jMenu1.add(jMenuItem2);
                                  
                                          jMenuItem3.setText("jMenuItem3");
                                          jMenu1.add(jMenuItem3);
                                  
                                          jMenuItem4.setText("jMenuItem4");
                                          jMenu1.add(jMenuItem4);
                                  
                                          jMenuBar1.add(jMenu1);
                                  
                                          jMenu2.setText("Edit");
                                  
                                          jMenuItem5.setText("jMenuItem5");
                                          jMenu2.add(jMenuItem5);
                                  
                                          jMenuItem6.setText("jMenuItem6");
                                          jMenu2.add(jMenuItem6);
                                  
                                          jMenuItem7.setText("jMenuItem7");
                                          jMenu2.add(jMenuItem7);
                                  
                                          jMenuItem8.setText("jMenuItem8");
                                          jMenu2.add(jMenuItem8);
                                  
                                          jMenuBar1.add(jMenu2);
                                  
                                          setJMenuBar(jMenuBar1);
                                  
                                          pack();
                                      }// </editor-fold>
                                  
                                      public static void main(String args[])
                                      {
                                          java.awt.EventQueue.invokeLater(new Runnable()
                                          {
                                              public void run()
                                              {
                                                  new NewJFrame().setVisible(true);
                                              }
                                          });
                                      }
                                  
                                      // Variables declaration - do not modify
                                      private javax.swing.JMenu jMenu1;
                                      private javax.swing.JMenu jMenu2;
                                      private javax.swing.JMenuBar jMenuBar1;
                                      private javax.swing.JMenuItem jMenuItem1;
                                      private javax.swing.JMenuItem jMenuItem2;
                                      private javax.swing.JMenuItem jMenuItem3;
                                      private javax.swing.JMenuItem jMenuItem4;
                                      private javax.swing.JMenuItem jMenuItem5;
                                      private javax.swing.JMenuItem jMenuItem6;
                                      private javax.swing.JMenuItem jMenuItem7;
                                      private javax.swing.JMenuItem jMenuItem8;
                                     
                                      // End of variables declaration
                                  }
                                  


                                  Afin d'écrire moins de ligne de code tu pourrais faire ceci pour les JMenuItems
                                  //présentement
                                  private javax.swing.JMenuItem jMenuItem8;
                                  
                                  //optimisé
                                  private javax.swing.JMenuItem jMenuItem8 = new JMenuItem("Menu Item8");
                                  


                                  Cela évitera de faire les "setText("Menu Item8")" dans ton initComponent.

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    24 novembre 2010 à 18:13:22

                                    Bravo, il fallait y penser. J'ai appris à redéfinir la méthode paint() pour dessiner, j'avoue que ta méthode est bien plus intéressante (même si netbeans trouve le fichier corrompu :lol: ) mais rien n'empêche l'exécution du programme


                                    Par contre je ne comprends pas à quoi sert cette ligne o_O

                                    private static final long serialVersionUID = 3930652123269292709L;
                                    
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Anonyme
                                      24 novembre 2010 à 18:39:02

                                      c'est un numéro de série de ton composant généré par Éclipse qui sert pour la sérialisation d'un objet....

                                      grosso-modo : Éclipse me dit d'en mettre un....alors j'en mets un :euh: .... (évite un warning).

                                      jamais plus utilisé que cela.
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        24 novembre 2010 à 18:42:19

                                        Citation : rickthomas

                                        c'est un numéro de série de ton composant généré par Éclipse qui sert pour la sérialisation d'un objet....

                                        grosso-modo : Éclipse me dit d'en mettre un....alors j'en mets un :euh: .... (évite un warning).

                                        jamais plus utilisé que cela.



                                        Netbeans ne m'affiche pas de warning, du moins pas pour ça :)
                                        C'est jsute que quand j'ouvre mon fichier il m'annonce qu'il est corrompu
                                        • Partager sur Facebook
                                        • Partager sur Twitter

                                        Repaint JMenuBar et JPanel

                                        × 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