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

avec Java Discussion :

CheckboxMenuItem et ItemListener


Sujet :

avec Java

  1. #1
    Membre confirmé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Points : 480
    Points
    480
    Par défaut CheckboxMenuItem et ItemListener
    Bonjour,
    Voila je cherche à creer un menu contextuel comme ceci
    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
    PopupMenu popup = new PopupMenu();
                            Menu submenu = new Menu("Sauvgarde");
    			MenuItem démarrer = new MenuItem("Afficher");
    			MenuItem quitter = new MenuItem("Quitter");
                            MenuItem config = new MenuItem("Configuration");
                            chk = new CheckboxMenuItem("Sauvegarder");
    			ActionListener afficher = new ActionListener() {
    				public void actionPerformed(ActionEvent e) {
    					setVisible(true);
    					setExtendedState(Frame.NORMAL);
     
    				}
    			};
    			ActionListener arrêter = new ActionListener() {
    				public void actionPerformed(ActionEvent e) {
    					try {
    						tray.displayMessage("Arrêt de l'application TIM+Auto",
    								"A bientôt", TrayIcon.MessageType.INFO);
    						Thread.sleep(4000);
    					} catch (InterruptedException ex) {
    					} finally {
    						System.exit(0);
    					}
    				}
    			};
                            ActionListener configur = new ActionListener() {
    				public void actionPerformed(ActionEvent e) {
    					try {
    					config ma_config = new config(null, rootPaneCheckingEnabled);
                                            ma_config.show();
    					} catch (Exception ex) {
    					} 
    				}
    			};
                            ItemListener Ouisave = new ItemListener() {
    			 @Override
                                public void itemStateChanged(ItemEvent e) {
     
     
                                    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
                                }
    			};
     
    			démarrer.addActionListener(afficher);
    			quitter.addActionListener(arrêter);
                            config.addActionListener(configur);
                           chk.addItemListener(Ouisave);
    			popup.add(démarrer);
                            popup.add(config);
                            popup.add(chk);
    			popup.add(quitter);
     
    			// création de l'icône
    			Image icone = Toolkit.getDefaultToolkit().getImage(getClass().getResource("nuclearsubmarine.png"));// Si l'image est dans le jar //$NON-NLS-1$
    			tray = new TrayIcon(icone,"TIM+Auto", popup);
    			//System.out.println("Affichage de l'icone");
    			tray.setImageAutoSize(true);
    			tray.addActionListener(afficher);
    			// placement de l'icône dans la barre de tâche
    			try {
    				SystemTray.getSystemTray().add(tray);
    			} catch (AWTException ex) {
    			}
    		}
    et sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ItemListener Ouisave = new ItemListener() {
    			 @Override
                                public void itemStateChanged(ItemEvent e) {
     
     
                                    throw new UnsupportedOperationException("Not supported yet."); 
                                }
    			};
    quand je clique sur mon checkboxmenuitem j'ai
    Exception in thread "AWT-EventQueue-0" java.lang.UnsupportedOperationException: Not supported yet.
    at jtimauto.vue$7.itemStateChanged(vue.java:689)
    at java.awt.CheckboxMenuItem.processItemEvent(CheckboxMenuItem.java:389)
    at java.awt.CheckboxMenuItem.processEvent(CheckboxMenuItem.java:357)
    at java.awt.MenuComponent.dispatchEventImpl(MenuComponent.java:351)
    at java.awt.MenuComponent.dispatchEvent(MenuComponent.java:339)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:732)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:688)
    at java.awt.EventQueue$3.run(EventQueue.java:686)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:702)
    at java.awt.EventQueue$4.run(EventQueue.java:700)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:699)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
    alors que je n'ai encore rien mis dedans
    Lorsque le sage montre la lune du doigt l'idiot regarde le doigt.

  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,

    L'ItemListener permet d'écouter les changements d'état du CheckboxMenuItem dus à une action utilisateur. Ce qu'il se passe lorsque tu cliques sur le menu (l'état doit passer de NOT SELECTED à SELECTED, ou inversement) ! Donc normal que l'évènement soit envoyé à ton écouteur d'évènements.

    Affiches l'évènement et tu verras justement quel changement d'état est notifié...
    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 confirmé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Points : 480
    Points
    480
    Par défaut
    Merci pour l aide. Mais ne comprends pas pourquoi j ai cette erreur . même en rajoutant
    quand je clique j ai
    true
    suivie de lz meme erreur.
    Lorsque le sage montre la lune du doigt l'idiot regarde le doigt.

  4. #4
    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
    Bah, tu soulèves systématiquement une exception dans ton listener... Normal, que tu aies une exception Ça ne change rien de lire l'état et de l'afficher. Si tu ne veux pas d'exception, n'en soulève pas, c'est tout.
    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.

  5. #5
    Membre confirmé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Points : 480
    Points
    480
    Par défaut
    Je vais passer pour un mais je ne saisi pas
    *Si tu ne veux pas d'exception, n'en soulève pas, c'est tout.
    .
    Lorsque le sage montre la lune du doigt l'idiot regarde le doigt.

  6. #6
    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 as défini ton listener comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ItemListener Ouisave = new ItemListener() {
       @Override
       public void itemStateChanged(ItemEvent e) {
          throw new UnsupportedOperationException("Not supported yet."); 
       }
    };
    Tu as enregistré ce listener sur ton CheckBoxMenuItem.

    Ce qui veut dire que, chaque fois qu'un ItemEvent est produit, par ton menu, il est transmis à ton listener, donc la méthode itemStateChanged(ItemEvent) est exécutée : et son code soulève une exception, sans condition.

    Donc, chaque fois qu'un ItemEvent est produit, c'est-à-dire que, chaque fois que l'état change (sur action utilisateur, d'après la doc, donc pas sur changement par appel de méthode, comme setState(boolean)), la méthode itemStateChanged sera invoquée, donc ton code sera invoqué, et, donc, l'exception soulevée.

    Donc, il n'y a rien d'anormal à ce que aies l'exception que tu obtiens, lorsque tu cliques sur le menu correspondant au CheckBoxMenuItem : cela exécute juste le code que tu as écrit.

    Pourquoi avoir faire ce throw new UnsupportedOperationException("Not supported yet."), si tu ne veux pas d'exception ?

    C'est dans le but de faire un pense-bête pour pas que tu oublies de coder cette méthode ? Pour avertir l'utilisateur que ça ne fait rien et que c'est normal, parce que tu n'as pas encore écrit le traitement approprié ?
    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.

  7. #7
    Membre confirmé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Points : 480
    Points
    480
    Par défaut
    Merci pour les infos. Je découvre petit à petit toutes les subtilités de java.
    Lorsque le sage montre la lune du doigt l'idiot regarde le doigt.

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

Discussions similaires

  1. problème avec itemListener et combobox
    Par claire13 dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 18/04/2008, 14h18
  2. [JCheckBox] ItemListener réagit une fois sur 2?
    Par matt8-5 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 08/11/2007, 17h05
  3. Réponses: 3
    Dernier message: 25/04/2007, 09h47
  4. Réponses: 7
    Dernier message: 17/04/2007, 13h51
  5. [swing][ItemListener]
    Par Shabata dans le forum Composants
    Réponses: 2
    Dernier message: 01/06/2005, 10h26

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