IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques en Java Discussion :

Mes menus ne s'affichent pas


Sujet :

Interfaces Graphiques en Java

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Février 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 25
    Points : 24
    Points
    24
    Par défaut Mes menus ne s'affichent pas
    Bonjour à tous,
    j'ai le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    package brahma;
     
    import java.awt.event.WindowEvent;
    import java.awt.event.WindowListener;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JOptionPane;
    import javax.swing.WindowConstants;
     
    public class FenetrePrincipale extends JFrame implements WindowListener {
     
    	JMenu menuFichier , menuEdition , menuModules;
    	JMenuBar menuFenetrePrincipale;
    	JMenuItem menuModulesClasses , menuModulesRaces;
     
    	private static final long serialVersionUID = 1L;
     
    	// fenetre principale de l'application
    	public FenetrePrincipale(){
    		addWindowListener(this);
    		setTitle("Fenêtre principale Brahma");
    		setLocation(100, 100);
    		setVisible(true);
    		setSize(400, 200);
    		JMenuBar menuFenetrePrincipale = new JMenuBar();
     
    		menuFichier = new JMenu("Fichier");  menuFenetrePrincipale.add(menuFichier);
    		menuEdition = new JMenu("Edition");  menuFenetrePrincipale.add(menuEdition);
    		menuModules = new JMenu("Modules");  menuFenetrePrincipale.add(menuModules);
    		menuModulesClasses = new JMenuItem("Classes"); menuModules.add(menuModulesClasses);
    		setJMenuBar(menuFenetrePrincipale);
    	}
     
     
    @Override
    public void windowActivated(WindowEvent arg0) {
    	// TODO Auto-generated method stub
    	System.out.println("Activation fenêtre");}
     
    @Override
    public void windowClosed(WindowEvent arg0) {
    	// TODO Auto-generated method stub}
     
    @Override
    public void windowClosing(WindowEvent arg0) {
    	// TODO Auto-generated method stub
    	int quitter = JOptionPane.showConfirmDialog(this, "Etes vous sur de vouloir quitter ?");
    	if (quitter == JOptionPane.YES_OPTION) {
    		System.out.println("Fermeture de la fenêtre");
    		System.exit(0);
    	}
        setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
    }
     
    @Override
    public void windowDeactivated(WindowEvent arg0) {
    	// TODO Auto-generated method stub}
     
    @Override
    public void windowDeiconified(WindowEvent arg0) {
    	// TODO Auto-generated method stub
    	System.out.println("Fenêtre en icone");}
     
    @Override
    public void windowIconified(WindowEvent arg0) {
    	// TODO Auto-generated method stub}
     
    @Override
    public void windowOpened(WindowEvent arg0) {
    	// TODO Auto-generated method stub}
     
    }
    Ça s'exécute sans soucis, la fenêtre se crée mais point de menu à l'affichage. Je suis sous MAC OS X donc le menu en haut ne contient que brahma.Brama comme menu.
    C'est un peu énervant.

    Par contre, et là c'est vraiment étrange, dès que je redimensionne ma fenêtre à la souris, paf les menus apparaissent.
    J'ai bien essayé de mettre un appel à paint() mais ça ne fait rien...

    De pus, j'ai déclaré la fenêtre extends WindowListener pour avoir les événements windows, mais visiblement pour avoir les listener menuitem il faut mettre implements ActionListener. On peut mettre les deux et si oui comment ?

    Au fait dernier point, n'hésitez pas à me dire si ma façon de coder est pas très "java compliant"...

    Merci à tous

    Merci à tous

  2. #2
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Il faut que ton appel à "setVisible(boolean)" soit fait à la fin de la création de ta frame.

    Ton application se dessine au moment où tu la rends visible, or, vu que tu la rends visible avant tout les ajouts, il est normal que tu ne vois rien.
    Elle se redessine ensuite quand tu la redimensionnes, et c'est pour ça que tu vois apparaître les menus.

    Concernant l'ajout des événements "window", tu n'as pas obligation de passer par l'interface WindowListener à implémenter.
    Tu peux aussi passer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    addWindowListener(new WindowAdapter() {
    	// Ici, je redéfini l'événement de fin, pour demander à l'utilisateur
    	// si il est sur de quitter.
    	@Override
    	public void windowClosing(WindowEvent we) {
    		if (JOptionPane.showConfirmDialog(
    						 null,
    						 "Êtes-vous sur de vouloir quitter ?",
    						 "Quitter",
    						 JOptionPane.YES_NO_OPTION
    						 )
    			== JOptionPane.YES_OPTION)
    				System.exit(0);
    			}
    });
    La classe WindowAdapter te permettant d'implémenter uniquement les méthodes que tu désirs utiliser, et non pas toute (ce qui est plus pratique quand tu en as une ou deux à faire).
    Il y a une classe Adapter pour tout les listener, de ce que j'en ai vu jusqu'à maintenant.

    Pour implémenter des listener sur ton menu, tout ce que tu a à faire, c'est ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    menuFichier.addActionListener(new ActionListener()  {
    	 @Override
    	 public void actionPerformed(ActionEvent ae)
    		 {
    			 // ce que le menu doit faire 
    		 }
    	 }
     );
    Une petite remarque aussi : les attributs.
    N'oublie pas de mettre une visibilité à ceux-ci (private, protected, public, package). Sans indicateur, elles sont en visibilité "package" par défaut (public pour tout le package, private pour le reste).
    Cela te permettra d'éviter des petits effets de bord et permettra de mieux respecter le principe d'encapsulation des variables du paradigme objet.

  3. #3
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Février 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 25
    Points : 24
    Points
    24
    Par défaut
    Merci pour les infos...
    Pour les implements multiples, j'ai trouvé, il suffit de les séparer par une virgule... Trop simple pour que j'y pense...
    JE vais mettre les identificateurs de portée...
    Merci.

Discussions similaires

  1. Mes sous-menus ne s'affichent pas dans IE7…
    Par Mister Paul dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 05/11/2010, 13h27
  2. Mes composants ne s'affichent pas
    Par michel71 dans le forum Débuter
    Réponses: 2
    Dernier message: 05/08/2007, 18h01
  3. mes image ne s'affiche pas
    Par vince351 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 05/04/2007, 14h00
  4. [Outils][Crystal Report] Pourquoi mes icones ne s'affichent pas ?
    Par tonynho dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 12/05/2006, 16h29
  5. [HTML Workshop] Mes images ne s'affichent pas
    Par lamarre aisha dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 25/10/2005, 14h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo