begin process at 2010 02 10 01:29:20
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Swing

 > TUTORIEL DE CRÉATION DE JMENU + LIENS

TUTORIEL DE CRÉATION DE JMENU + LIENS


 Information sur la source

Note :
7 / 10 - par 3 personnes
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Swing Classé sous :jmenu, tutorial, tutoriel, création, liens Niveau :Débutant Date de création :24/04/2003 Date de mise à jour :09/05/2003 11:15:46 Vu :17 685

Auteur : BlackWood

Ecrire un message privé
Site perso
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

 Description

La création de menu est une chose longue et plutot barbante. Mieux vaut avoir le meilleur algo possible. C'est celui-ci qui est pour moi le meilleur. On ne s'embete pas à déclarer toutes les variables, 1 suffit pour toutes les options. Et ca va plus vite pour le copier-coller...
Mais j'ai commenté directement dans le code donc je vous laisse voir :  

Source

  • import java.awt.*;
  • import java.awt.event.*;
  • import javax.swing.*;
  • /**
  • * Tutoriel de création de menus.
  • *
  • * @author BlackWood
  • */
  • class MonMenu extends JMenuBar {
  • // ** En attribut, les différents JMenu
  • // On peut ajouter les sous-menus.
  • JMenu * = new JMenu("*");
  • JMenu * = new JMenu("*");
  • (...)
  • // 1 seul JMenuItem qui servira pour tous les menus
  • // JRadioButtonMenuItem ou/et JCheckBoxMenuItem facultatifs.
  • JMenuItem menuItem;
  • // ** Constructeur
  • public MonMenu() {
  • // On construit chaque menu :
  • // MENU menu {{
  • // Lettre raccourci
  • menu.setMnemonic(KeyEvent.VK_#); // KeyEvent : voir JavaDoc
  • // On construit pour chaque menu chaque options :
  • // OPTION * {{
  • // Création de l'option et de la lettre raccourci
  • menuItem = new JMenuItem("*",KeyEvent.VK_#);
  • // Raccourci-CTRL - facultatif
  • menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_#, ActionEvent.CTRL_MASK));
  • // Ajout au gestionnaire d'événément
  • menuItem.addActionListener(new Action());
  • // Ajout au menu
  • menu.add(menuItem);
  • // }} Recommencez pour chaque options
  • // N'oubliez pas, quand vous le voulez :
  • fichier.addSeparator();
  • // Ajout à la barre
  • this.add(menu);
  • // }} Recommencez pour chaque menu
  • }
  • // ** Gestionnaire d'événements du menu.
  • class Action implements ActionListener {
  • public void actionPerformed(ActionEvent e) {
  • // On repère la source
  • JMenuItem source = (JMenuItem)(e.getSource());
  • // Et pour chaque option :
  • if(source.getText() == "*") *();
  • if(source.getText() == "*") *();
  • (...)
  • // Exemple :
  • if(source.getText() == "Ouvrir...") ouvrir();
  • }
  • }
  • // ** Méthodes des menu
  • // Pour chaque option, on créera une méthode
  • void *() {}
  • // Exemple :
  • void ouvrir() {
  • // CODE
  • }
  • }
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/**
 * Tutoriel de création de menus.
 *
 * @author  BlackWood
 */

class MonMenu extends JMenuBar {
	
      // ** En attribut, les différents JMenu
      // On peut ajouter les sous-menus.
      JMenu *	= new JMenu("*");
      JMenu *	= new JMenu("*");
      (...)

      // 1 seul JMenuItem qui servira pour tous les menus
      // JRadioButtonMenuItem ou/et JCheckBoxMenuItem facultatifs.
      JMenuItem menuItem;

      // ** Constructeur
      public MonMenu() {

            // On construit chaque menu :

            // MENU menu {{
            // Lettre raccourci
            menu.setMnemonic(KeyEvent.VK_#);	// KeyEvent : voir JavaDoc

            // On construit pour chaque menu chaque options :
            
            // OPTION * {{
            // Création de l'option et de la lettre raccourci
            menuItem = new JMenuItem("*",KeyEvent.VK_#);
            // Raccourci-CTRL - facultatif
            menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_#, ActionEvent.CTRL_MASK));
            // Ajout au gestionnaire d'événément
            menuItem.addActionListener(new Action());
            // Ajout au menu
            menu.add(menuItem);
            // }} Recommencez pour chaque options

            // N'oubliez pas, quand vous le voulez :
            fichier.addSeparator();
            
            // Ajout à la barre
            this.add(menu);
            // }} Recommencez pour chaque menu
      }
		
      // ** Gestionnaire d'événements du menu.
      class Action implements ActionListener {
            public void actionPerformed(ActionEvent e) {

                  // On repère la source
                  JMenuItem source = (JMenuItem)(e.getSource());
                  // Et pour chaque option :
                  if(source.getText() == "*")          *();
                  if(source.getText() == "*")          *();
                  (...)
                  // Exemple :
                  if(source.getText() == "Ouvrir...")      ouvrir();
            }
      }

      // ** Méthodes des menu
	
      // Pour chaque option, on créera une méthode
      void *() {}
      // Exemple :
      void ouvrir() {
            // CODE
      }
}  

 Conclusion

Bon, bien sur, faut vraiment être neuneu pour pas avoir remarqué que le code n'est pas utilisable tel quel ! Mais il ne reste plus qu'à le creer. La structure est toute faite !
Voilà. Libre à vous d'adopter ma méthode ou de garder la votre.

Bon, puisqu'on ne doit pas mettre que des liens dans un source, je l'ajoute ici (dans le forum, c'est vite oublier). Ils sont vraiment TRES sympa mais de haut niveau. Réservé au developpeurs confirmé :
(Ce sont tous des jeux avec leurs sources)

http://www.javaonthebrain.com
Site d'un developpeur expérimenté. Ne manquez pas son fameux "IceBlox".

http://www.mazeworks.com
Site de jeux de réflexion, casse-têtes où vous trouverez les algo les plus tordus, de l'IA bien développé. Vraiment trés bon.


 Sources de la même categorie

JLABELIMAGE : GESTION D'UNE IMAGE EN ARRIÈRE-PLAN par bob22mael
Source avec Zip SÉLECTEUR DE DATES MULTIPLES, ORIGINE UHRAND par William44290
RECHERCHE D'ELEMENTS DANS UNE JLIST par Ze_Hulk
Source avec Zip Source avec une capture PROGICIEL DE LOCATION DE VOITURE par SoftDeath
Source avec Zip Source avec une capture CALENDRIER ET HORLOGE AVEC LA LIBRAIRIE ORG.JDESKTOP.SWINGX par Cornellus1985

 Sources en rapport avec celle ci

Source avec Zip TUTORIEL DE PASCAL par amiros2007
Source avec Zip Source avec une capture CALCULETTE - PARTIE 3 TUTORIAL SWING par tucobouch
Source avec Zip Source avec une capture JEU DE SUDOKU, AVEC CRÉATION ET RÉSOLUTION DE GRILLES par OscarI
Source avec Zip PDF POUR DÉBUTER EN JAVA PARTIE 2 par crimsonPhantom
Source avec Zip PDF POUR DÉBUTER EN JAVA PARTIE 1 par crimsonPhantom

Commentaires et avis

Commentaire de raff le 24/04/2003 18:50:31

bon je suis d'accord, tu n'as pas eu besoin de déclarer une variable pour chaque JMenuItem.....mais finalement, il faut tout de même que tu ajoutes chacun un à la fois, en précisant le texte et les propriétés, etc.  Je ne trouves pas qu'il s'agit d'un avantage, mais plutôt d'un désavantage, car les objets sont gardés en mémoire même si aucune variable ne réfère directement à ceux-ci (un menu n'est qu'un pointeur, ce qui est gardé en mémoire, ce sont les attributs, texte, mnémonic, etc.).  Et puis cela devient plus complexe de modifier les attributs, par exemple si tu veux faire un setEnable(false)  sur un JMenuItem en particulier.  Tu est alors obligé de faire un test sur chacun des menus pour trouver l'item en question....Mieux vaut avoir une référence à chaque objet, c'est plus clair et plus pratique.

Commentaire de BlackWood le 25/04/2003 08:54:57

>> Raff : C'est vrai, un des probleme pour cet algo est le setEnabled(false) par exemple mais je l'avais remarqué et en fait j'ai utilisé une variable pour les menus que j'ai besoins de manipulé de cet façon (qui sont finalement assez rares). Les autres sont restés ce "menuItem".
  Alors finalement, y a-t-il un algo parfait pour les menus ? Sans déclarer une vingtaine de variables inutiles ou sans perdre ses avantages en n'en déclarant qu'une seule ?

Commentaire de raff le 26/04/2003 01:09:52

Je ne sais pas si on peut vraiment appeler ça un algorithme...mais enfin, je crois vraiment que cette idée de ne pas déclarer les variables pour ce genre d'objet (ou finalement de ne pas garder de référence à ceux-ci) soit une erreur.  Au pire, tu peux toujours utiliser un tableau (JMenuItem[] mes_items) si tu as beaucoup d'items et que tu veux pas te perdre.  Mais enfin je ne vois pas ce qu'il y a de si compliqué avec les menus, c'est pas mal moins encombrant que tout ce qu'il faut faire pour bien (je dis "bien") agencer un interface (avec les différents layouts)...

Commentaire de Skyzoboy le 23/05/2003 10:43:15

Si l'on fait :
<nomduJMenu>.getItem(<indexItem>).setEnabled(false)  --> ça marche nikel !

Pire ! Pour les sous-menus :

(<nomduJMenu>.getMenuComponent(<indexSousJMenu>)).getItem(<indexItem>).setEnabled(false) --> ça marche aussi !

Donc je ne vois pas où est le problème ??? (tjs pas besoin de déclarer les variables, par contre les JMenu doivent l'être pour les listeners ....)

@+

Commentaire de Skyzoboy le 23/05/2003 10:44:15

Si l'on fait :
<nomduJMenu>.getItem(<indexItem>).setEnabled(false)  --> ça marche nikel !

Pire ! Pour les sous-menus :

(<nomduJMenu>.getMenuComponent(<indexSousJMenu>)).getItem(<indexItem>).setEnabled(false) --> ça marche aussi !

Donc je ne vois pas où est le problème ??? (tjs pas besoin de déclarer les variables, par contre les JMenu doivent l'être pour les listeners ....)

@+

Commentaire de Skyzoboy le 23/05/2003 10:46:24

DSL pour le flood ...

rectification :

((JMenu)<nomduJMenu>.getMenuComponent(<indexSousJMenu>)).getItem(<indexItem>).setEnabled(false)

@+

Commentaire de raff le 23/05/2003 18:21:28

je n'ai jamais dit que ce n'était pas possible....ce que je dis, c'est que c'est pas élégant, dans ce genre de situation, et que finalement, tu sauves trois ou quatre lignes de codes pour finalement te retrouver avec des objets accessibles avec deux lignes de get this get that.....et puis le "ça marche" est très très loin d'être une bonne raison dans la plupart des cas.

Commentaire de rschwartz le 26/09/2003 15:43:32

cavoktchi

Commentaire de philllou le 14/01/2005 23:32:24

Merci pour ton code et bonne continuation

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

JFreeChart tutorial [ par zolotaya ] Bonjour, Voila, je dois réaliser un outil de tracage de graphique en JAVA dans l'objectif de l'intégré à un logiciel plus complex aprés.Comme on m'a a demande d'aide pour la création d'un exercice [ par daviddubois ] Bonjour tout le monde,J'ai une demande un peu spéciale.Je dois faire un exercice en JAVA mais franchement, je n'y comprends rien.Sauriez-vous svp m'ai BESOIN D AIDE EN URGENCE [ par belmaati1 ] bonjour Besoin docs tutoriel debutant. [ par naejnad ] Bonjour a tous,Je suis debutant a un niveau 0 en javascript, mais je possede les bases en HTML et en C. J'aimerais vraiment connaitre les bases de ce Probleme player en java [ par neodes ] Bonjour voila j'ai un petit probleme !Ce probleme est le suivant j'ai un webplayer pour shoutcast en java et je voudrais dans ce player ajouter des po Java [ par mbotsa ] Esk qlqn peut me donner des avis pour la création de jeux pour les mobiles (J2ME) et des exemples en codes sources?Et aussi pour la création de jeux 3 création d'une base de données sur access [ par mohgad ] Bonjour à tous j'ai un petit problème et je vous demande un petit coup de main.Voilà je travaille dans une petite association où nous proposons divers un tutorial sur les portlets en français [ par ahmed_mido006 ] Bonsoir, je viens de commencer un travail avec les portlets et j'ai besoin d'un cour en françaias sur les portlets, si quelqu un on a un , je lui sera Tutoriel video [ par DoroT17 ] BonjourJe suis nouvellement inscrite et je n'arrive pas à lire les tuto vidéos. La vidéo démarre et s'arrête immediatement.Quelqu'un a t'il déjà renco création d'une zone cliquable [ par ldumont ] Bonjour, je débute en java et je cherche un moyen de créer une zone cliquable sur une image.Je ne vois pas comment rendre une partie de l'image sensib


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,655 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales