Bonjour,
Dans une JComboBox, comment faire pour que, lorsque je clique sur la touche "Supp" ou "Del" du clavier => l'élement sélectionné de la liste sera supprimer ?
et merci d'avance
Bonjour,
Dans une JComboBox, comment faire pour que, lorsque je clique sur la touche "Supp" ou "Del" du clavier => l'élement sélectionné de la liste sera supprimer ?
et merci d'avance
Salut.
Pour gérer les événements clavier sur un composant, il faut utiliser l'interface KeyListener.
Cette interface définit 3 méthodes :
- keyPressed (méthode invoquée lorsque l'on presse une touche)
- keyReleased (méthode invoquée lorsque l'on relâche une touche)
- keyTyped (méthode invoquée lorsque l'on appuie sur une touche)
Dans ton cas, il va falloir que tu crées une classe implémentant cette interface
en définissant une action pour l'événement keyTyped. Vu que tu n'as pas besoin des autres méthodes tu peux tout simplement créer une classer qui dérive de KeyAdapter qui est une classe implémentant l'interface KeyListener en fournissant une implémentation par défaut pour chacune des méthodes (tu n'auras ainsi qu'à redéfinir la méthode qui t'intéresse).
Il faut donc tout d'abord que tu crées une classe dérivant de KeyAdapter.
Note : cette classe peut très bien être une classe interne à ta classe graphique principale. Cela te permettra d'accéder plus facilement à ta variable JComboBox pour connaitre l'élément sélectionné.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 class DeleteKeyListener extends KeyAdapter{ public void keyTyped(KeyEvent e){ if(e.getKeyCode()==KeyEvent.VK_DELETE || e.getKeyCode()==KeyEvent.VK_BACK_SPACE){ //action de suppression } } }
Ensuite, tu ajoute ta classe écouteur à ta JComBox.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 taJComboBox.addKeyListener(new DeleteKeyListener());
Note bien aussi que tu peux également utiliser une classe interne anonyme pour coder ton action.
Et normalement ça devrait fonctionner.
Si c'est pas clair, n'hésite pas à demander des précisions.
A+
PS: le cas échéant, tu peux aller jeter un coup d'oeil au tuto de Sun sur les KeyListener.
-"Tout ça me paraît très mal organisé. Je veux déposer une réclamation. Je paye mes impôts, après tout!"
-"JE SUIS LA MORT, PAS LES IMPÔTS! MOI, JE N'ARRIVE QU'UNE FOIS".
Pieds d'argile (1996), Terry Pratchett 1948 - 2015
(trad. Patrick Couton)
j'ai testé mais sa n'a pas marché (lorsque je clique sur le bouton Del)
j'ai affiché quelque variable pour contrôler l'erreur:
et laffichage est comme suit: e.getKeyCode()=0 | KeyEvent.VK_DELETE=127 | KeyEvent.VK_BACK_SPACE=8
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 System.out.println("e.getKeyCode()="+e.getKeyCode()+" | KeyEvent.VK_DELETE="+KeyEvent.VK_DELETE+" | KeyEvent.VK_BACK_SPACE="+KeyEvent.VK_BACK_SPACE);
Ce n'est pas vraiment un KeyListener qu'il faut utiliser pour une action sur une touche. Il faut se servir des InputMap.
Un exemple pour ajouter une action de création sur la combinaison de touche Ctrl+N ou F4 dans une JTable.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 // Add action map InputMap inputMap = panelContenantMaTable.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); // raccourci pour création inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_N, KeyEvent.CTRL_DOWN_MASK), "create"); inputMap.put(KeyStroke.getKeyStroke(KeyEvent.getKeyText(KeyEvent.VK_F4)), "create"); m_panel.getActionMap().put("create", new CreateAction(true));
Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
De la bonne manière de poser une question (et de répondre).
Je ne fais pas de service par MP. Merci (...de lire les règles...).
Ma page dvp.com
merci pour vos reponse
Bonjour,
je reviens sur ce topic qui est intéressant. En effet, j'aimerais savoir quelle est la différence entre l'utilisation d'un KeyListener et d'un InputMap. Aussi, quand utilisez l'un et pas l'autre et vice versa ?
En effet, j'aimerais créer un évènement associé à un JtextArea qui fait partie de ma vue dans mon modèle MVC
--> Quand l'utilisateur supprime du texte dans le JtextArea alors informer mon modèle grâce au controleur. <--
Merci d'avance,
Une InputMap + ActionMap permet de découpler une action (a effectuer) du raccourci clavier qui permet de le déclencher. Ca permet par exemple de facilement redéfinir les touches raccourcies a toutes ces actions. Par exemple dans un jeu dans un jeu on peut souvent redéfinir toutes les touches ou dans une application bureautique ou chaque utilisateur pourrait redéfinir tous les raccourcis clavier des commandes principales. Tandis que quand on code un KeyListener, ben tout est code en dur et donc on peut difficilement changer ce que vont faire les touches activées.
Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager