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 :

Création d'une classe menu à instancier pour la création d'un menu


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 144
    Points : 83
    Points
    83
    Par défaut Création d'une classe menu à instancier pour la création d'un menu
    Bonjour,

    Afin d'éviter de surcharger mon main, je souhaite créer une classe menu dans laquelle j'implémenterais mon menu de la façon suivante :
    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
        private JMenuBar menuBar;
        private JMenu mnFichier,mnEdition,mnPropos ;
        private JMenuItem mntmNouvelleRecherche, mntmDveloppeurs, mntmPartager, mntmExporter;
        private JMenuItem mntmQuitter, mntmCopier, mntmColler, mntmSupprimer, mntmVersion,mntmToutSlctionner ;
     
            mnFichier = new JMenu("Fichier");
            menuBar.add(mnFichier);
     
            mntmNouvelleRecherche = new JMenuItem("Nouvelle recherche");
            mnFichier.add(mntmNouvelleRecherche);
     
            mntmPartager = new JMenuItem("Partager");
            mnFichier.add(mntmPartager);
     
            mntmExporter = new JMenuItem("Exporter");
            mnFichier.add(mntmExporter);
     
            mntmQuitter = new JMenuItem("Quitter");
            mnFichier.add(mntmQuitter);
     
            mnEdition = new JMenu("Edition");
            menuBar.add(mnEdition);
     
            mntmCopier = new JMenuItem("Copier");
            mnEdition.add(mntmCopier);
     
            mntmColler = new JMenuItem("Coller");
            mnEdition.add(mntmColler);
     
            mntmSupprimer = new JMenuItem("Supprimer");
            mnEdition.add(mntmSupprimer);
     
            mntmToutSlctionner = new JMenuItem("Tout s\u00E9l\u00E9ctionner");
            mnEdition.add(mntmToutSlctionner);
     
            mnPropos = new JMenu("\u00C0 Propos");
            menuBar.add(mnPropos);
     
            mntmVersion = new JMenuItem("Version");
            mnPropos.add(mntmVersion);
     
            mntmDveloppeurs = new JMenuItem("D\u00E9veloppeurs");
            mnPropos.add(mntmDveloppeurs);
    et dont je pourrais appeler la création dans mon main.

    Quelqu'un saurait-il m'indiquer comment faire ?

    Merci d'avance pour votre aide.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    pour créer une nouvelle classe, crées un nouveau fichier java (par exemple CreationMenu.java) et mets y le code d'une classe CreationMenu avec le code de création que tu as posté.

    Tu peux par exemple mettre le code dans le constructeur : il te faudra passer en paramètres de cette méthode les variables que tu as dans ta méthode main dont tu as besoin pour créer tes menus (comme menuBar par exemple). Si tu as besoin de manipuler tes différents menus en dehors de cette classe, prévois juste des accesseurs, comme getMenuFichier() dans l'exemple ci-dessous :

    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
    public class CreationMenu() {
     
    	private JMenu mnFichier,mnEdition,mnPropos ;
    	private JMenuItem mntmNouvelleRecherche, mntmDveloppeurs, mntmPartager, mntmExporter;
    	private JMenuItem mntmQuitter, mntmCopier, mntmColler, mntmSupprimer, mntmVersion,mntmToutSlctionner ;
     
            public CreationMenu(JMenuBar menuBar) {
     
    		mnFichier = new JMenu("Fichier");
    		menuBar.add(mnFichier);
     
                    ...
     
            }
     
            public JMenu getMenuFichier() {
                 return mnFichier;
            }
     
            ...
     
    }
    et pour l'appel dans main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public static void main(String[] args) {
     
     
            ...
     
            CreationMenu menuCreation=new CreationMenu(menuBar);
     
            ...
     
            // et tu peux manipuler tes menus par menuCreation.getMenuFichier() par exemple
     
            ...
     
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 144
    Points : 83
    Points
    83
    Par défaut
    J'essaie de voir ce que ça donne.

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 144
    Points : 83
    Points
    83
    Par défaut
    Ok, maintenant je souhaite ajouter la gestion d'événement à mon menu. J'ai essayé avec ActionListener mais ça n'a pas l'air de fonctionner. Avec ActionListener j'ai plutôt essayé comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        public void actionPerformed(ActionEvent e){
                    //vue.scroller.setVisible(true);
            if(e.getSource().equals(vue.mntmNouvelleRecherche)){
                JOptionPane jop1 = new JOptionPane();
                jop1.showMessageDialog(null, "Message informatif", "Information", JOptionPane.INFORMATION_MESSAGE);
            }
        }
    Dois-je plutôt essayer avec MouseListener ? Si oui, aurais-tu un exemple d'implémentation ?

    Merci d'avance.

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Tu l'as bien enregistré sur le bon menu ton ActionListener ? Parce que c'est bien un ActionListener qu'il faut utiliser.

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ActionListener actionListener = new ActionListener() {
    public void actionPerformed(ActionEvent e){
     
            if(e.getSource().equals(mntmNouvelleRecherche)){
                JOptionPane jop1 = new JOptionPane();
                jop1.showMessageDialog(null, "Message informatif", "Information", JOptionPane.INFORMATION_MESSAGE);
            }
        }
    };
     
    mntmNouvelleRecherche = new JMenuItem("Nouvelle recherche");
    mntmNouvelleRecherche.addActionListener(actionListener);
     
    ...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 144
    Points : 83
    Points
    83
    Par défaut
    Ok. Merci.

    Sinon, je cherche à rendre invisible un composant de ma fenêtre et le rendre visible que lorsqu'une action est effectuée.
    Une idée pour rendre juste un composant invisible dans ma fenêtre principale ?

  7. #7
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Si c'est un simple composant, un setVisible(true/false) devrait faire l'affaire.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

Discussions similaires

  1. Création d'une classe de base pour les ChildWindow
    Par Mozofeuk dans le forum Silverlight
    Réponses: 4
    Dernier message: 15/11/2011, 14h42
  2. Réponses: 4
    Dernier message: 29/07/2010, 09h50
  3. Réponses: 4
    Dernier message: 02/01/2010, 23h23
  4. création d'une classe pour une table
    Par asma07 dans le forum C#
    Réponses: 3
    Dernier message: 19/10/2009, 17h00
  5. Réponses: 0
    Dernier message: 12/08/2008, 17h12

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