From: "Herve AGNOUX" <hagnoux@mail.club-internet.fr>
To: java@u-strasbg.fr
Date sent: Fri, 4 Feb 2000 15:49:46 +0100
Subject: touche d'alerte
Priority: normal
Send reply to: java@u-strasbg.fr
Bonjour,
Avec swing 1.1.1 et jdk 1.1, je voudrais que lorsqu'on appui sur une
touche spéciale, quelque soit le composant qui ait le focus, je puisse
déclencher une action. Par exemple, comme "F1" qui déclenche l'affichage
d'un panneau d'aide. Savez-vous comment faire ? Merci.
--
Hervé AGNOUX hagnoux@mail.club-internet.fr
Faites vos sites avec des formulaires electroniques :
http://www.diaam.com
Date sent: Fri, 04 Feb 2000 16:36:19 +0100
From: Guillaume Desnoix <guillaume-desnoix@memoire.com>
To: java@u-strasbg.fr
Subject: Re: touche d'alerte
Send reply to: java@u-strasbg.fr
Herve AGNOUX wrote:
> Avec swing 1.1.1 et jdk 1.1, je voudrais que lorsqu'on appui sur une
> touche spéciale, quelque soit le composant qui ait le focus, je puisse
> déclencher une action. Par exemple, comme "F1" qui déclenche l'affichage
> d'un panneau d'aide. Savez-vous comment faire ? Merci.
Si tu as un menu d'aide,
MenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1,0));
Si tu n'as pas de menu,
KeyStroke f1_=KeyStroke.getKeyStroke(KeyEvent.VK_F1,0,false);
_cp.registerKeyboardAction
(al_,f1_,JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
ou _cp est ton JComponent principal (en general JFrame.getRootPane()) et
al_ un ActionListener.
D'autres syntaxes sont possibles (ou on peut passer la string
ActionCommand).
En placant de telles KeyboardAction sur tes differents composants, tu peux
meme faire une aide contextuelle.
Sinon, il y a aussi JavaHelp (mais c'est une lib externe et je n'ai pas
essaye).
Par contre, il y a qqch que je n'ai pas reussi a faire, c'est une aide par
designation. Comme dans ces applis ou le curseur passe en fleche+? et ou
on clique sur un composant pour en avoir l'aide. Si qqn sait comment
faire... merci. (j'ai bien essaye avec un GlassPane mais sans succes).
Guillaume