Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1349 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  récupérer les évènements clavier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

récupérer les évènements clavier

n°343809
vink
Posté le 26-03-2003 à 14:04:08  profilanswer
 

Après une recherche sur le forum, je n'ai pas trouvé de réponse à la question suivante.
 
J'ai un JLabel sur lequel il y a un MouseListener --> ça, ça marche.
Je voudrais y ajouter un KeyListener, mais là, quoi que je fasse, j'ai beau appuyer sur n'importe quelle touche il ne se passe rien.
 
Le JLabel contient une image. Le MouseListener permet d'obtenir l'emplacement de la souris sur l'image.
Et je voudrais qu'en appuyant sur certaines touches, le programme effectue certaines opérations. Et pour cela, il faudrait qu'il récuppère toutes les informations venant du clavier.
Comment puis-je faire ?
 
Merci


---------------
Nos seules limites sont celles que nous nous imposons
mood
Publicité
Posté le 26-03-2003 à 14:04:08  profilanswer
 

n°343812
noldor
Rockn'roll
Posté le 26-03-2003 à 14:07:38  profilanswer
 

et avec un requestFocus sur ton panel ?

n°343813
western
AJMM
Posté le 26-03-2003 à 14:08:57  profilanswer
 

vink a écrit :


Je voudrais y ajouter un KeyListener,  


Et tu t'as pris comment?

n°343816
vink
Posté le 26-03-2003 à 14:10:46  profilanswer
 

Qu'est-ce que c'est ??
 
En fait, la récupération des évènements clavier n'a pas besoin d'être rattachée au JPanel.
A partir du moment où l'application est lancée, il faudrait que toute touche enfoncée soit récupérée.


---------------
Nos seules limites sont celles que nous nous imposons
n°343818
bobuse
Posté le 26-03-2003 à 14:12:51  profilanswer
 

vink a écrit :

Qu'est-ce que c'est ??
 
En fait, la récupération des évènements clavier n'a pas besoin d'être rattachée au JPanel.
A partir du moment où l'application est lancée, il faudrait que toute touche enfoncée soit récupérée.


Les evenements clavier sont chopes par le composant qui a le focus ... donc pour pour que ca marche, il faut que tu force en faisant un requestFocus() sur ton composant (comme te l'as dit noldor)


---------------
get amaroK plugin
n°343840
vink
Posté le 26-03-2003 à 14:24:28  profilanswer
 

OK,
Donc maintenant, j'ai un truc dans ce style:
 
monLabel.addMouseListener(new MouseListener());
monLabel.requestFocus();
monLabel.addKeyListener(new KeyListener());
 
Mais ça ne réagit toujours pas. Qu'ai-je oublié ?


---------------
Nos seules limites sont celles que nous nous imposons
n°343856
bobuse
Posté le 26-03-2003 à 14:42:21  profilanswer
 

vink a écrit :

OK,
Donc maintenant, j'ai un truc dans ce style:
 
monLabel.addMouseListener(new MouseListener());
monLabel.requestFocus();
monLabel.addKeyListener(new KeyListener());
 
Mais ça ne réagit toujours pas. Qu'ai-je oublié ?


Il est fait quand ton requestFocus par rapport au reste des opérations ? (construction de la fenetres, ...)
Si tu le fais en tout dernier, ca doit marcher


---------------
get amaroK plugin
n°343858
vink
Posté le 26-03-2003 à 14:45:45  profilanswer
 

Le requestFocus est fait à la fin de la création de la fenêtre.
Le addKeyListener doit être fait avant ou après le requestFocus ?


---------------
Nos seules limites sont celles que nous nous imposons
n°343875
bobuse
Posté le 26-03-2003 à 14:55:03  profilanswer
 

vink a écrit :

Le requestFocus est fait à la fin de la création de la fenêtre.
Le addKeyListener doit être fait avant ou après le requestFocus ?


Ben avant, c'est plus logique a mon avis ...


---------------
get amaroK plugin
n°343931
vink
Posté le 26-03-2003 à 15:16:31  profilanswer
 

Ok, c'est bon ça fonctionne.
Merci à tous ;)


---------------
Nos seules limites sont celles que nous nous imposons
mood
Publicité
Posté le 26-03-2003 à 15:16:31  profilanswer
 

n°343942
deltaden
Posté le 26-03-2003 à 15:19:39  profilanswer
 

ben le problème avec cette méthode, c'est que dès qu'un autre objet  prend le focus, ben le clavier il fait plus rien.
 
Si tu veux que ton applis face réagisse de la même façon au clavier, quel que soit le component qui a le focus; tu dois faire un addKeyListener(KeyList) sur chaque component qui pourrait avoir le focus. (tu créé qu'un seul KeyListener que tu met à tous les components, ca sert à rien d'en faire 50!)


---------------
"La Terre est le berceau de l'humanité, mais on ne passe pas toute sa vie au berceau." - Konstantine Tsiolkovski
n°343967
Predicator
Posté le 26-03-2003 à 15:30:56  profilanswer
 

y'a-t-il une solution par exemple pour associer un MouseListener à un JPanel "a", et en associer un autre à un JPanel "b" inclu dans "a" ?
 
j'ai essayé sans sucès. j'imagine que Java se paume, mais ce serait quand même bien pratique...

n°344014
bobuse
Posté le 26-03-2003 à 15:53:38  profilanswer
 

Ben tu peux en faire un seul pour a, et faire un traitement diffrérent si tu es sur b ... mais bon, ya ptet une meilleure sol ...


---------------
get amaroK plugin
n°344034
Predicator
Posté le 26-03-2003 à 16:02:22  profilanswer
 

concrètement
 
j'ai un JPanel ensembleImage
 
ce panel contient n JPanel imagePanel
 
chaque imagePanel possède son propre MouseListener et son propre MouseMotionListener, pour permettre de créer des formes géométriques...
 
je voudrais ajouter un MouseMotionListener à ensImagePanel pour dessiner un rectangle sous la souris (par exemple pour montrer la zone qui sera zoomée)
 
je l'ai fais, et ce qui se passe, c'est que le MouseMotionListener de ensImagePanel ne réagit que dans la zone qui sépare chaque ImagePanel :sarcastic:  
 
sioux ? non [:zebra33]


Message édité par Predicator le 26-03-2003 à 16:02:38
n°344055
bobuse
Posté le 26-03-2003 à 16:10:35  profilanswer
 

Predicator a écrit :

concrètement
 
j'ai un JPanel ensembleImage
 
ce panel contient n JPanel imagePanel
 
chaque imagePanel possède son propre MouseListener et son propre MouseMotionListener, pour permettre de créer des formes géométriques...
 
je voudrais ajouter un MouseMotionListener à ensImagePanel pour dessiner un rectangle sous la souris (par exemple pour montrer la zone qui sera zoomée)
 
je l'ai fais, et ce qui se passe, c'est que le MouseMotionListener de ensImagePanel ne réagit que dans la zone qui sépare chaque ImagePanel :sarcastic:  
 
sioux ? non [:zebra33]


Et tu peux pas au moment ou tu cliques dans ton EnsImaPanel, virer tous les autres, et les remettre a la fin ?
 
Enfin c'est crade mais bon ... si ca marchait ?


---------------
get amaroK plugin
n°344063
Predicator
Posté le 26-03-2003 à 16:18:54  profilanswer
 

ça pourrait marcher, à condition que les évènement soient lancés du composant le plus haut au composant le plus bas...
 
mais c'est une excellente idée, j'ai une autre méthode pour désactiver les listener des imagePanel...
 
je reviens dans 30 secondes ;)
 
merci pour m'avoir fait penser à ce truc tout con :sweat:
 
EDIT :
 
bah ça marche bien [:xp1700]


Message édité par Predicator le 26-03-2003 à 17:08:30
n°344741
souk
Tourist
Posté le 27-03-2003 à 05:22:17  profilanswer
 

Salut, plutot que de recreer un topic, je continue sur celui-ci. Je cherche egalement a recuperer des evenements claviers, mais mon application n'est pas graphique. Grosso modo, c'est une interface en ligne de commande pour dialoguer avec une BDD. Je voudrais intercepter les appuis sur la touche TAB pour faire de la completion automatique (a l'instar des interfaces ligne de commandes de PostgreSQL, MySQL et surement d'autre).  
Le gros probleme, c'est que les seuls objets qui "ecoutent" le claviers sont les composants AWT... Y'en a qui auraient des idees ? ca fait deux jours que je planche, j'essaie des trucs, mais rien.
 
 :(

n°345816
deltaden
Posté le 27-03-2003 à 18:24:38  profilanswer
 

bah, tu lis sur l'entrée standart (System.in) les caractères tapés, si c'est un tab tu fais ton autocomplétion,  
pas besoin d'un keyListener!


---------------
"La Terre est le berceau de l'humanité, mais on ne passe pas toute sa vie au berceau." - Konstantine Tsiolkovski
n°345826
souk
Tourist
Posté le 27-03-2003 à 18:32:42  profilanswer
 

ben non, quand on lit sur l'entree standard, d'une part les caracteres sont affiches, ensuite, pour pouvoir lire, il faut valider la ligne par un retour chariot... donc marche pas. Mais si vous avez d'autres idees, vu que j'ai fait un autre topic (c'est pas vraiment le meme probleme que celui traite ici) mieux vaut repondre dans l'autre. Mais merci pour ton aide tout de meme :o)
sur ce, bonne nuit !

n°345828
bobuse
Posté le 27-03-2003 à 18:33:39  profilanswer
 

deltaden a écrit :

bah, tu lis sur l'entrée standart (System.in) les caractères tapés, si c'est un tab tu fais ton autocomplétion,  
pas besoin d'un keyListener!


Ouais, j'y ai pensé aussi, mais tu fais comment pour effacer les caracteres ?


---------------
get amaroK plugin
n°345834
deltaden
Posté le 27-03-2003 à 18:41:27  profilanswer
 

bobuse a écrit :


Ouais, j'y ai pensé aussi, mais tu fais comment pour effacer les caracteres ?


c'est vrai ca, j'y ai pas pensé...


---------------
"La Terre est le berceau de l'humanité, mais on ne passe pas toute sa vie au berceau." - Konstantine Tsiolkovski
n°345841
souk
Tourist
Posté le 27-03-2003 à 18:47:45  profilanswer
 

et puis meme, avec l'entree standard, on ne recupere pas les caracteres 1 par 1, on choppe tout le paquet jusqu'au retour chariot, ca fonctionne comme un buffer grosso modo. des qu'on appuie sur entree, on a acces au "buffer" (=entree standard) mais pas avant  :sleep:  ;)

n°345849
bobuse
Posté le 27-03-2003 à 18:52:30  profilanswer
 

:o


---------------
get amaroK plugin
n°346049
deltaden
Posté le 27-03-2003 à 23:24:31  profilanswer
 

c'est vrai que c'était complètement débile mon idée de System.in
j'ai pas du assez dormir la nuit passé...


---------------
"La Terre est le berceau de l'humanité, mais on ne passe pas toute sa vie au berceau." - Konstantine Tsiolkovski
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  récupérer les évènements clavier

 

Sujets relatifs
Comment recuperer l'objet d'une ListBoxrecuperer un cookie
les evenements en MFCRécupérer le nom de champs d'une base de données Access
Entrée clavier avec PHP en ligne de commande ?Comment récupérer sur un site cette info ?
création dynamique d'événements [solution]Récupérer des infos sur un site à partir de données locales?
[java] Saisie au clavierComment récupérer une variable d'un formulaire ?
Plus de sujets relatifs à : récupérer les évènements clavier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR