Partage
  • Partager sur Facebook
  • Partager sur Twitter

Cours Menu : problème méthode setJMenuBar

Sujet résolu
    29 avril 2010 à 21:45:50

    Bonjour tout le monde !!

    J'ai un soucis avec le cours de création des menus.

    J'en suis à la toute première partie et j'essaie en fait de me créer une classe Menu plutôt que de définir toute le caractéristique de ma barre de menu dans la classe Fenetre.

    Aussi pour pouvoir passer le bon paramètre à la méthode setJMenuBAr il faut que que je créer un accesseur vers le composant JMenuBar de ma classe Menu......mais ça ne fonctionne pas !! J'ai un énorme NullPointerException

    Je passe le code parce que je sèche complètement. Merci pour votre aide

    classe Fenetre :
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    
    public class ZFenetre extends JFrame {
    	
    	private MenuBarre Menu;
    	
    	public ZFenetre(){
    		this.setSize(400, 200);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.setLocationRelativeTo(null);
    		this.setJMenuBar(Menu.getMenuBar());
    		this.setVisible(true);
    		}
    }
    


    classe Menu :
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    
    
    public class MenuBarre {
    	
    	private JMenuBar menuBar = new JMenuBar();
    	private JMenu test1 = new JMenu("Fichier");
    	private JMenu test2 = new JMenu("Edition");
    		
    	private JMenuItem item1 = new JMenuItem("Ouvrir");
    	private JMenuItem item2 = new JMenuItem("Fermer");
    	private JMenuItem item3 = new JMenuItem("Lancer");
    	private JMenuItem item4 = new JMenuItem("Arrêter");
    	
    	public MenuBarre(){
    		this.test1.add(item1);
    		item2.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent arg0) {
    				System.exit(0);
    			}				
    		});
    		this.test1.add(item2);
    		this.test2.add(item3);
    		this.test2.add(item4);
    		this.menuBar.add(test1);
    		this.menuBar.add(test2);
    	}
    
    	public JMenuBar getMenuBar() {
    		return menuBar;
    	}	
    }
    
    • Partager sur Facebook
    • Partager sur Twitter
      29 avril 2010 à 21:55:00

      T'as pas encore saisi toutes les subtilités de la POO apparemment.

      private MenuBarre Menu = new MenuBarre();

      Et oui c'est une classe aussi il faut l'instancier.

      Pour l'info : NullPointerException ne se serait pas déclenchée si getMenuBar() renvoyait null car la méthode setMenuBar() attend un objet en paramètre et ne throws pas de NullPointerException.

      P.S. Ce qui aurait été encore plus clair aurait été de créer une méthode private dans ta JFrame, qui s'occuperait de construire le menu.
      Mais ta volonté de créer plusieurs classes est déjà un pas vers les bonnes pratiques.

      Bon courage :)

      • Partager sur Facebook
      • Partager sur Twitter
        29 avril 2010 à 22:01:19

        OULALA la vilaine erreur !!!

        Je te remercie elmh !!
        • Partager sur Facebook
        • Partager sur Twitter

        Cours Menu : problème méthode setJMenuBar

        × 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