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

Composants Java Discussion :

Ajouter une action à un sous-menu


Sujet :

Composants Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 186
    Points : 71
    Points
    71
    Par défaut Ajouter une action à un sous-menu
    Bonjour, je construit un sous-menu de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     while(iter.hasNext()){
                   tmpGBL = iter.next();
                   if(tmpGBL.name.compareTo(gblm.currentGlobalLinks.name)!=0){
     
                        JMenuItem jMenuItem1 = new JMenuItem();
                        jMenuItem1.setText(tmpGBL.name);                   
                        jMenuItem1.setName("open"+tmpGBL.name+"Item");                  
     
                        openMenu.add(jMenuItem1);
                        openMenu.validate();                  
                    }
                }
    Il se construit parfaitement, mais lorsque j'essaye d'ajouter une action à jMenuItem, j'ai essayer beaucoup de méthodes, il ne l'exécute pas

    Exemple de méthodes que j'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     AbstractAction showOpenGBL = new AbstractAction("open"+tmpGBL.name) {
                            public void actionPerformed(ActionEvent e) {
                               syso("heyhey");
                            }
                        };
    jMenuItem1.setAction(showOpenGBL);
    JMenuItem jMenuItem1 = new JMenuItem(new showOpenGBL);
    OU showOpenGBL est une classe extends abstractAction.

    ... et d'autres encores.

    Mais aucune réaction.

    Si quelqu'un à une solution pour moi il me serait d'un grand secours.

  2. #2
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    Salut,

    Ça devrait marcher. Je suppose que c'est pour créer des raccourcis fichiers ou quelque chose du genre, de façon dynamique.

    Voici un code qui reprend ta "façon de faire" et il fonctionne.
    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
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.ArrayList;
    import java.util.List;
    import javax.swing.AbstractAction;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
     
    public class Test extends JFrame {
     
    	public static void main(String[] args) {
    		Test f = new Test();
    		f.pack();
    		f.setLocationRelativeTo(null);
    		f.setVisible(true);
    	}
     
    	private JMenu openMenu;
     
    	public Test() {
    		setDefaultCloseOperation(EXIT_ON_CLOSE);
     
    		JMenuBar menuBar = new JMenuBar();
    		openMenu = new JMenu("Open");
     
    		JMenuItem addItem = new JMenuItem("clic pour créer les raccourcis dynamiquement");
    		addItem.addActionListener(new ActionListener() {
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				addItem();
    			}
    		});
    		openMenu.add(addItem);
    		menuBar.add(openMenu);
    		openMenu.addSeparator();
    		setJMenuBar(menuBar);
    	}
     
    	private void addItem() {
    		List<String> items = new ArrayList<String>();
    		items.add("item 1");
    		items.add("item 2");
    		items.add("item 3");
    		for (final String s : items) {
    			JMenuItem jMenuItem1 = new JMenuItem();
    			jMenuItem1.setText(s);
    			jMenuItem1.setName("open" + s + "Item");
    			AbstractAction showOpenGBL = new AbstractAction("open" + s) {
    				public void actionPerformed(ActionEvent e) {
    					System.out.println("heyhey " + s);
    				}
    			};
    			jMenuItem1.setAction(showOpenGBL);
    			openMenu.add(jMenuItem1);
    		}
    		openMenu.validate();
    	}
     
    }

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 186
    Points : 71
    Points
    71
    Par défaut
    ça ne marche pas...

    En fait cette fonction créer un sous menu à partir d'une arreyList d'objet x

    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
    @Action
        public void buildOpenMenu() {
            GlobalLinksManager gblm = GlobalLinksManager.getInstance();
            if(gblm.globalsLinks.size()>1){
                for (final GlobalLinks s : gblm.globalsLinks) {
                    JMenuItem jMenuItem1 = new JMenuItem();
                    jMenuItem1.setText(s.name);
                    jMenuItem1.setName("open" + s.name + "Item");
                    AbstractAction showOpenGBL = new AbstractAction("open" + s.name) {
                            public void actionPerformed(ActionEvent e) {
                                    System.out.println("heyhey " + s.name);
                            }
                    };
                    jMenuItem1.setAction(showOpenGBL);
                    openMenu.add(jMenuItem1);
                }
                openMenu.validate();
            }
        }
    Le sous menu se créer parfaitement mais quand je clique sur l'un des items du sous menu rien ne se passe (pas de syso)

  4. #4
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    Le code que je t'ai donné fonctionne, et cela démontre que le mécanisme que tu as pensé est correct.
    Ton code ne fonctionne pas, j'aurais donc tendance à dire que le problème est ailleurs. Je ne vois pas de problème dans le code que tu as donné.
    Post le code testable de ce que tu as fait, avec les actions qui ne se déclenche pas, sinon je ne peux guère aider davantage.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 186
    Points : 71
    Points
    71
    Par défaut
    Pour le code testable ça va être un peu dur puisque il dépend d'un appli qui commence à être lourde...
    je vais essayer de faire ça demain. merci de ton intérêt en tout cas

Discussions similaires

  1. Ajouter une action dans le menu lors d'un clic droit
    Par steackfrite dans le forum NetBeans
    Réponses: 0
    Dernier message: 26/08/2013, 10h07
  2. Affichage des composants cachés sous l'effet d'une action d'un menu en Java
    Par nehlaING dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 31/03/2010, 14h06
  3. Ajouter une entrée dans le menu contextuel de la barre de titre sous Windows
    Par Tyler_Durden dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 20/10/2008, 09h50
  4. Ajouter une action dans le menu help d'une application RCP
    Par jinar dans le forum Eclipse Platform
    Réponses: 4
    Dernier message: 11/06/2008, 11h56
  5. Réponses: 1
    Dernier message: 02/08/2007, 12h42

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