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 :

Récupérer nom de JMenuItem cliqué


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations forums :
    Inscription : Septembre 2010
    Messages : 116
    Points : 88
    Points
    88
    Par défaut Récupérer nom de JMenuItem cliqué
    Bonjour à tous.

    Je viens vers vous après quelques heures d'essai sans succès. Je voudrais tout simplement récuperer le nom de variable des JMenuItems contenus dans un JPopupMenu que j'affiche après avoir cliqué sur une ligne d'une JTable. C'est à dire, si mon JMenuItem s'appele "mntmRptB01" et je clique dessus, je voudrais récupérer mntmRptB01 dans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	public void actionPerformed(ActionEvent event) {
        	JMenuItem source = (JMenuItem) (event.getSource());
    		String s = "Menu Item source: " + source.getText();
    		System.out.println(IdKey + " " +s);
    		}
    J'avais essayé avec getSource tout seul, mais ce que j'obtiens c'est une ligne très longue avec toute la description de mon JMenuItem. J'ai trouvé le code ci-dessus et là je récupère le label de mon JMenuItem et pas son nom, c'est à dire la même chose que si je utilisais getActionCommand.

    L'idée est d'appeler une autre classe, selon le JMenuItem cliqué. Je pourrais le faire avec les labels, mais les labels contiennent beaucoup plus de texte, en plus dans les noms de JMenuItem j'emploie des valeurs à la fin pour me repérer dans mon projet (B01, B10, C21, E11...).

    Je mets ma classe PopupMenu.

    Je vous remercie d'avance pour vos lumières.

    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    package principal;
     
     
    import java.awt.Font;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
     
    import javax.swing.ImageIcon;
     
    import javax.swing.JMenu;
    import javax.swing.JMenuItem;
    import javax.swing.JPanel;
    import javax.swing.JPopupMenu;
    import javax.swing.JSeparator;
    import javax.swing.JTable;
     
     
    public class PopupMenuExample extends JPanel implements ActionListener{  
    	private static final long serialVersionUID = 1L;
    	public JPopupMenu popupMenu;
    	private int IdKey;
     
    	public PopupMenuExample() {
    		popupMenu = new JPopupMenu();
    //		ActionListener menuListener = new ActionListener() {
     
     
     //     }
     
    	JMenu mnB = new JMenu("BAUTISMO\n");
    	mnB.setFont(new Font("Lucida Grande", Font.BOLD, 12));
    	popupMenu.add(mnB);
     
    		JMenuItem mntmRptB01 = new JMenuItem("Acta de Bautismo");
    		mntmRptB01.setIcon(new ImageIcon("/Users/aCedano/Pictures/Imagenes/16x16-free-application-icons/png/16x16/About.png"));
    		mntmRptB01.setFont(new Font("Lucida Grande", Font.ITALIC, 12));
    		mntmRptB01.addActionListener(this);
    		mnB.add(mntmRptB01);
     
    		mnB.addSeparator();
     
    		JMenuItem mntmRptB02 = new JMenuItem("Reporte Bautizados en \u00E9sta fecha");
    		mntmRptB02.setIcon(new ImageIcon("/Users/aCedano/Pictures/Imagenes/16x16-free-application-icons/png/16x16/Downloads folder.png"));
    		mntmRptB02.setFont(new Font("Lucida Grande", Font.ITALIC, 12));
    		mntmRptB02.addActionListener(this);
    		mnB.add(mntmRptB02);
    		mnB.addSeparator();
     
    	JSeparator separator = new JSeparator();
    	popupMenu.add(separator);
     
    	JMenu mnC = new JMenu("CONFIRMACI\u00D3N");
    	mnC.setFont(new Font("Lucida Grande", Font.BOLD, 12));
    	popupMenu.add(mnC);
     
    		JMenuItem mntmRptC01 = new JMenuItem("Acta de Confirmaci\u00F3n");
    		mntmRptC01.setFont(new Font("Lucida Grande", Font.ITALIC, 12));
    		mnC.add(mntmRptC01);
     
    		JMenuItem mntmC21 = new JMenuItem("Reporte al Obispado");
    		mntmC21.setFont(new Font("Lucida Grande", Font.ITALIC, 12));
    		mnC.add(mntmC21);
     
    	JSeparator separator_1 = new JSeparator();
    	popupMenu.add(separator_1);
     
    	JMenu mnM = new JMenu("MATRIMONIO");
    	mnM.setFont(new Font("Lucida Grande", Font.BOLD, 12));
    	popupMenu.add(mnM);
     
    		JMenuItem mntmM01 = new JMenuItem("Acta de Matrimonio");
    		mntmM01.setFont(new Font("Lucida Grande", Font.ITALIC, 12));
    		mnM.add(mntmM01);
     
    		JMenuItem mntmRptM21 = new JMenuItem("Notificaci\u00F3n a Parroquia de Bautismo");
    		mntmRptM21.setFont(new Font("Lucida Grande", Font.ITALIC, 12));
    		mnM.add(mntmRptM21);
     
    	JSeparator separator_2 = new JSeparator();
    	popupMenu.add(separator_2);
     
    	JMenu mnE = new JMenu("EUCARIST\u00CDA");
    	mnE.setFont(new Font("Lucida Grande", Font.BOLD, 12));
    	popupMenu.add(mnE);
     
    		JMenuItem mntmRptE01 = new JMenuItem("Acta de 1ra Comuni\u00F3n");
    		mntmRptE01.setFont(new Font("Lucida Grande", Font.ITALIC, 12));
    		mnE.add(mntmRptE01);
     
      }
    	public void actionPerformed(ActionEvent event) {
        	JMenuItem source = (JMenuItem) (event.getSource());
    		String s = "Menu Item source: " + source.getText();
    		System.out.println(IdKey + " " +s);
    		}
      public void show(JTable jtbProducto, int xposition, int yposition, int IdKey) {
    		// TODO Auto-generated method stub
    	this.IdKey = IdKey;	
    	popupMenu.show(jtbProducto, xposition, yposition);
     
      }
    }

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 977
    Points
    7 977
    Par défaut
    Tu peux récupérer le nom de n'importe quel JComponent avec getName(). A condition bien entendu d'avoir donné un nom au JComponent.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2009
    Messages : 73
    Points : 160
    Points
    160
    Par défaut Confirmation
    Salut, je confirme la solution apportée par 'wax78'. De plus c'est plus simple et pratique.

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations forums :
    Inscription : Septembre 2010
    Messages : 116
    Points : 88
    Points
    88
    Par défaut
    Bonjour et merci de vos réponses.

    Je n'arrive pas avec getName...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	public void actionPerformed(ActionEvent event) {
    		System.out.println (event.getName);
    		}
    J'ai le message d'erreur:
    Exception in thread "AWT-EventQueue-0" java.lang.Error: Unresolved compilation problem:
    getName cannot be resolved or is not a field

    Mais vous m'avez conduit sur une piste de solution... En effet le label du JMenuItem est donné dans sa création:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		JMenuItem mntmRptB01 = new JMenuItem("Acta de Bautismo");
    Donc dans la création de mon JMenuItem je peux assigner quelque chose d'autre avec setActionCommand:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mntmRptB01.setActionCommand("rptB01");
    ...et le récupérer après:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	public void actionPerformed(ActionEvent event) {
    		String nomDoc = event.getActionCommand();
    //		System.out.println (nomDoc);
    		if (nomDoc == "rptB01") {
    	  	     new ImprJasper("IdPersona", idKey, nomDoc, "PDF");
    		}	
    		}
    C'est donc ainsi que j'ai résolu mon cas. Merci pour la piste.

  5. #5
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 977
    Points
    7 977
    Par défaut
    Même si le problème est résolu, en fait c'était pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	public void actionPerformed(ActionEvent event) {
    		System.out.println (event.getName);
    		}
    mais plutot quelque chose du genre que je visais (pas testé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	public void actionPerformed(ActionEvent event) {
    		System.out.println (event.getSource().getName());
    		}
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations forums :
    Inscription : Septembre 2010
    Messages : 116
    Points : 88
    Points
    88
    Par défaut
    @wax78

    J'ai testé par curiosité et ce n'est pas possible dans mon cas. J'ai l'erreur: "the method getName() is undefined for the type Object".

  7. #7
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 977
    Points
    7 977
    Par défaut
    Oui a mon avis il faut caster "la source" en JComponent.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD5.5] récupérer nom colonne cliquée
    Par lubinfo dans le forum WinDev
    Réponses: 6
    Dernier message: 20/06/2014, 14h59
  2. [AC-2007] Récupérer nom du bouton cliqué
    Par PatSan dans le forum IHM
    Réponses: 14
    Dernier message: 04/12/2012, 21h01
  3. [AC-2003] Récupérer le nom du champ cliqué
    Par Marin d'Eau Douce dans le forum VBA Access
    Réponses: 8
    Dernier message: 07/05/2012, 14h13
  4. Récupérer nom d'occurrence du bouton cliqué.
    Par darkageof62 dans le forum Flash
    Réponses: 2
    Dernier message: 02/12/2010, 18h19
  5. récupérer le nom du fichier cliqué par la souris
    Par PH_DEMS dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 04/06/2008, 14h06

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