Comportement étrange JMenuBar

Fermé
Arhuca - 7 juin 2012 à 15:30
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 - 7 juin 2012 à 15:33
Bonjour,

J'ai remarqué un comportement étrange avec ma JMenuBar : quand je lance l'application, parfois elle n'apparaît pas immédiatement tant qu'il n'y a pas eu d'interaction avec un composant.
Je n'ai pas trouvé de situation particulière qui déclencherait cette disparition. Je veux dire par là que ce problème n'apparait pas lorsqu'il y a eu un problème d'exécution au précédent lancement, ni après aucun autre type de manipulation. En ouvrant et refermant successivement mon application une dizaine de fois, je peux avoir ce problème aussi bien deux ou trois fois que zéro fois.

Le code de la JFrame où j'ai placé ma JMenuBar :
public class FenetreInterfacePrincipale extends JFrame
{
	public FenetreInterfacePrincipale ()
	{		
		// Gestionnaire de mise en page 		
                              this.setLayout(new FlowLayout());
				
		// Ajouter l'interface à la fenêtre
this.add(new InterfacePrincipale());
		
		// Afficher la fenêtre
		this.pack();
		this.setVisible(true);
		
		// Fermeture de la fenêtre
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		// Instanciation des contrôleurs
		ControleurClassPath ccp = new ControleurClassPath();
		ControleurHelp ch = new ControleurHelp();
		ControleurStatus cs = new ControleurStatus();
		
		// Création de la barre des menus
		JMenuBar menuBar = new JMenuBar();
			
			// Création des menus
			JMenu status = new JMenu("Status");
			JMenu admin = new JMenu("Admin");
			JMenu help = new JMenu("Help");
			
			// Création des items des menus
			JMenuItem statusManager = new JMenuItem("Manager");
			JMenuItem statusBuyer = new JMenuItem("Buyer");
			JMenuItem adminPath = new JMenuItem("Change path");
			JMenuItem helpFile = new JMenuItem("Open user manual (Powerpoint)");
			
			// Ajout des items à chaque menu
			status.add(statusManager);
			status.add(statusBuyer);
			admin.add(adminPath);
			help.add(helpFile);
			
			// Ajout des menus à la barre
			menuBar.add(status);
			menuBar.add(admin);
			menuBar.add(help);
			
			// Ajout de la barre à la fenêtre
			this.setJMenuBar(menuBar);
			
			// Ajout des écouteurs à chaque item
			adminPath.addActionListener(ccp);
			helpFile.addActionListener(ch);
			statusManager.addActionListener(cs);
			statusBuyer.addActionListener(cs);
	} 


Merci d'avance pour votre aide.

1 réponse

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
7 juin 2012 à 15:33
Place ton setVisible(true) à la fin, le rafraîchissement de la fenêtre aura ainsi lieu une fois tous les composants visuels créés, et en particulier avec ton JMenuBar.
3