Partage
  • Partager sur Facebook
  • Partager sur Twitter

Soucis dans l'ajout d'une JMenuBar

Sujet résolu
    8 novembre 2008 à 10:42:31

    Bonjours.

    Je souhaite ajouter dans mon interface un menu (JMenuBar) dans la zone haute de mon programme.
    J'ai la zone nord de ma JFrame qui contient un JPanel en borderLayout.

    Je souhaite utiliser la zone nord de mon JPanel pour y mettre mon menu, et la zone centre pour y mettre une barre d'accès rapide (donc contenant des boutons).

    Seulement des que j'essaye de mettre mon JMenuBar dans la zone nord de mon Jpanel, il me met un signe d'interdiction et refuse de me le poser.

    Alors d'où ma question, aurais-je besoin d'un conteneur spécial pour les JMenuBar ?
    Ce soucis peut-il être contourné ?

    Je pose mon code (light car ne contient actuellement que mes conteneurs)
    import java.awt.Frame;
    import java.awt.Dimension;
    import javax.swing.JPanel;
    import java.awt.GridBagLayout;
    import java.awt.BorderLayout;
    import javax.swing.JMenu;
    
    public class Graphique extends Frame {
    
    	private static final long serialVersionUID = 1L;
    	private JPanel options = null;
    	private JPanel optionHaut = null;
    	private JPanel optionBas = null;
    	private JPanel optionMilieu = null;
    	/**
    	 * This is the default constructor
    	 */
    	public GraphiqueCdListe() {
    		super();
    		initialize();
    	}
    
    	/**
    	 * This method initializes this
    	 * 
    	 * @return void
    	 */
    	private void initialize() {
    		this.setSize(1024, 768);
    		this.setTitle("Frame");
    		this.add(getOptions(), BorderLayout.NORTH);
    	}
    
    	/**
    	 * This method initializes options	
    	 * 	
    	 * @return javax.swing.JPanel	
    	 */
    	private JPanel getOptions() {
    		if (options == null) {
    			options = new JPanel();
    			options.setLayout(new BorderLayout());
    			options.setPreferredSize(new Dimension(1024, 100));
    			options.add(getOptionHaut(), BorderLayout.NORTH);
    			options.add(getOptionBas(), BorderLayout.SOUTH);
    			options.add(getOptionMilieu(), BorderLayout.CENTER);
    		}
    		return options;
    	}
    
    	/**
    	 * This method initializes optionHaut	
    	 * 	
    	 * @return javax.swing.JPanel	
    	 */
    	private JPanel getOptionHaut() {
    		if (optionHaut == null) {
    			optionHaut = new JPanel();
    			optionHaut.setLayout(null);
    			optionHaut.setPreferredSize(new Dimension(1024, 30));
    		}
    		return optionHaut;
    	}
    
    	/**
    	 * This method initializes optionBas	
    	 * 	
    	 * @return javax.swing.JPanel	
    	 */
    	private JPanel getOptionBas() {
    		if (optionBas == null) {
    			optionBas = new JPanel();
    			optionBas.setLayout(null);
    			optionBas.setPreferredSize(new Dimension(1024, 30));
    		}
    		return optionBas;
    	}
    
    	/**
    	 * This method initializes optionMilieu	
    	 * 	
    	 * @return javax.swing.JPanel	
    	 */
    	private JPanel getOptionMilieu() {
    		if (optionMilieu == null) {
    			optionMilieu = new JPanel();
    			optionMilieu.setLayout(null);
    			optionMilieu.setPreferredSize(new Dimension(1024, 40));
    		}
    		return optionMilieu;
    	}
    
    }
    


    Merci d'avance de votre aide :)
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      8 novembre 2008 à 11:29:41

      Effectivement on pourrait dire qu'il y a un "conteneur spécial" mais tu n'as pas besoin de le définir, c'est bien plus simple que ce que tu veux faire :
      JMenuBar menu = new JMenuBar();
      this.setJMenuBar(menu);
      
      • Partager sur Facebook
      • Partager sur Twitter
        8 novembre 2008 à 21:10:43

        Merci de ta réponse mais je crains que cette solution ne suffise pas.

        j'ai rajouté manuellement comme tu me l'a cité mais ça ne fait que planter eclipse.

        J'ai ptete oublié de mentionner que j'utilise un FrameVisualClass pour faciliter la conception.

        ------------------------------------------------------------------------------------------------

        J'édite pour ne pas flood :)

        Effectivement cette méthode fonctionne très bien dans un conteneur en borderLayout.
        Mais il faut mieux débuter son code (pour les non experts comme moi ^^) manuellement jusqu'à la fin de l'insertion. Sinon cela peux provoquer des plantages (enfin chez moi donc c'est ptete pas une généralité )

        Merci de ton aide ;)
        • Partager sur Facebook
        • Partager sur Twitter

        Soucis dans l'ajout d'une JMenuBar

        × 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