Salut,
J'avais une fenêtre dotée d'un KeyListener qui marchait bien.
Je rajoute un JTabbedPane dans cette fenêtre, impeccable, mais je n'arrive plus à intercepter les actions clavier...
Que dois-je faire ?
Pascal
Salut,
J'avais une fenêtre dotée d'un KeyListener qui marchait bien.
Je rajoute un JTabbedPane dans cette fenêtre, impeccable, mais je n'arrive plus à intercepter les actions clavier...
Que dois-je faire ?
Pascal
Je crois (mais j'ai peut-être tort) que c'est ton JTabbedPane qui a le focus, et plus ta Frame. Du coup, cela ne fonctionne plus. C'est désormais sur le JTabbedpane que tu devrait intercepter le clavier.
Mais, ne te satisferais-tu des JMenuItem qui possède cette fonction intégré ? Cela est plus simple et concis.
JMenuItem ? A la place de quoi ? De JTabbedPane ? Mais ça fait pas du tout la même chose ?
Non, moi je veux mon JTabbedPane, c'est trop joli, ça marche très bien sauf l'interception du clavier.
Je veux bien intercepter sur le JTabbedpane, mais je vois pas trop comment faire. Je sais, c'est sans doute du b-a ba, mais l'interface c'est le quart du dixième de mes soucis, et en même temps il me faut qqchose de propre.
Help encore ! Un exemple d'interception de clavier avec JTabbedPane ? Juste me mettre le pied à l'étrier que je passe pas des heures à merdoyer j'ai tellement d'autres trucs à faire !!!
Il semble que présentement, cela soit au contraire ton soucisl'interface c'est le quart du dixième de mes soucis
Effectivement, aussi un JMenuItem, non pas pour remplacer ton JTabbedPane, mais pour gérer ton interception clavier.JMenuItem ? A la place de quoi ? De JTabbedPane ? Mais ça fait pas du tout la même chose ?
J'ai pas d'exemple sous la main.Un exemple d'interception de clavier avec JTabbedPane
Comment fait tu pour intercepter le clavier sur ta Frame ? Au lieu de relier le listener sur la Frame, tu le reli au JTabbedPane.
Te moques pas !
Ben, justement, j'utilise JMenuItem. Actuellement j'ai :
- un JFrame avec un KeyListener,
- qui contient un GridLayout 3x3,
- qui contient 9 org.jfree.chart.ChartPanel, chacun doté d'un JMenuItem.
Jusque là tout va bien sauf que l'utilisateur n'a accès qu'à 9 charts.
J'introduis donc un JTabbedPane entre le JFrame et le GridLayout, mais je n'ai plus accès au clavier, comme tu dis, c'est le JTabbedPane qui doit intercepter pour son compte.
Tu dis que je peux utiliser la présence des JMenuItem pour intercepter le clavier ? Explique un peu.
Si ton but est d'intercepter toutes les frappes clavier a la manière d'un keylogger alors non, c'est pas fait pour ça. Mais tu peut associer une touche clavier a chaque JMenuItem.Tu dis que je peux utiliser la présence des JMenuItem pour intercepter le clavier ? Explique un peu.
Par setAcelerator :
Code : Sélectionner tout - Visualiser dans une fenêtre à part item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.SHIFT_MASK));Ou un AWTEventListener pour intercepter tous les frappes clavier n'importe où dans ton appli (comme un keylogger), mais ça se déclenche partout. Faut donc pas mettre des traitement trop long dans cet évènement, sinon ça ralenti considérablement ton appli.Utilise un AWTEventListener
Mmmmm, mes menus n'étaient pas faits pour ça mais il faut y réfléchir.
Bon, c'est AWTEventListener qu'il me faut : un truc qui se déclenche partout, car les événements en question se rapportent bien à la totalité de l'appli, pas à telle où telle partie de la fenêtre.Envoyé par visiwi
Je me documente, j'essaye et je vous tiens au jus.
Merci
Pascal
Bon, ok, AWTEventListener fonctionne impeccable et j'intercepte à nouveau les événement du clavier, merci à vous deux.
Cependant --- et c'est pour cela que je clos pas le fil --- je ne suis pas tout à fait satisfait. Si j'avais tenu à rétablir le comportement antérieur, avec interception des événements au niveau de la fenêtre, comment aurait-il fallu s'y prendre ?
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