Gestion Clavier

Gestion Clavier - Java - Programmation

Marsh Posté le 19-11-2004 à 15:50:48    

Re Bonjour, désolé de reposeter un autre sujet mais j'ai un autre problème...je suis débutant en Java donc cela peut se pardonner ! enfin j'espère  :whistle:  
 
voila j'ai fait une autre petite application banale qui devrait réagir lorsque j'appuie sur la touche F1 en m'inscrivant un message dans la console (ou autre chose...) J'ai donc utiliser cette méthode que l'on m'avait conseillé...
 

Code :
  1. public boolean keyDown (Event e, int key) {
  2. //key==1008 avec 1008 correpondant a F1 OU
  3. if (key==java.awt.Event.F1)
  4.       {System.out.println("F1 Appuyé !" );       
  5.         return true;
  6.        }
  7.     return true;
  8.     }


 
Mais donc cela ne marche pas vraiment puisque rien ne réagit sauf si je créé un composant TextField et que le curseur est dedans alors lorsque j'appuie sur F1, tout est OK !
 
Est-ce que quelqu'un pourrait m'aider en me disant ce qui ne va pas dans ce code ? Et si je dois changer de méthodes ? Si oui Help SVP ?
 
Merci d'avance !


Message édité par niouts le 19-11-2004 à 15:51:20
Reply

Marsh Posté le 19-11-2004 à 15:50:48   

Reply

Marsh Posté le 25-11-2004 à 20:33:42    

je suis débutant aussi en java mais je penses que si tu nous montrer ta méthode main on pourrait t'aider plus facilement : )

Reply

Marsh Posté le 25-11-2004 à 21:07:13    

c'est pas comme ca que ca marche : il faut que tu utilises un KeyListener en surchargeant la méthode keyPressed() et que tu assigne ce listener au composant que tu veux sureveiller


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 25-11-2004 à 23:00:42    

en l'occurence certainement le containPane de la frame principale.

Reply

Marsh Posté le 26-11-2004 à 13:15:51    

OK ! Merci pour les infos...
 
je vais tester ca alors, je vous tiens au courant !  :hello:

Reply

Marsh Posté le 26-11-2004 à 14:23:51    

Alors voila...j'ai testé ca :

Code :
  1. addKeyListener
  2.      (new KeyAdapter () {
  3.           public void keyPressed (KeyEvent e, int key) {
  4.           if (key==1008)  //code de F1
  5.              {
  6.       System.out.println("F1 Appuye !" );
  7.                }
  8.          
  9.           }
  10.            }
  11.      );


mais cela ne marche pas...bien sur j'ai essayé avec la touche espace aussi enfin il manque peut etre un detail ou alors je teste mal  :pt1cable:  on sait jamais  :na:  
Quelqu'un peut m'aider sachant que j'ai bien sur mis implements KeyListener dans la "définition" de la classe ??
Merci !


Message édité par niouts le 26-11-2004 à 14:25:30
Reply

Marsh Posté le 26-11-2004 à 21:29:42    

tu l'ajoute a quoi ton listener?
Si ton but c'est de l'ajouter a une frame alors jte deconseille cette methode.

Reply

Marsh Posté le 27-11-2004 à 19:36:41    

fais un system.out au début de ton keypressed event pour voir si ton listener est bien enregistré là ou tu veux.

Reply

Marsh Posté le 30-11-2004 à 10:13:47    

Bonjour,
désolé de ne pas avoir répondu avant...
 

Citation :

fais un system.out au début de ton keypressed event pour voir si ton listener est bien enregistré là ou tu veux.

 alors j'ai testé, rien ne s'affiche
 

Citation :

tu l'ajoute a quoi ton listener?  
Si ton but c'est de l'ajouter a une frame alors jte deconseille cette methode.  

 je veux l'ajouter à la frame en effet...
Que me conseillez vous alors car aparement c'est vrai que c'est déconseillé  :(  
Merci  :bounce:


Message édité par niouts le 30-11-2004 à 10:14:33
Reply

Marsh Posté le 30-11-2004 à 13:03:51    

ben fait une menubar et dans tes menuitem tu ajoute des "accelerator":
 
mi = new JMenuItem("mon menu qui doit demarrer par F2" );
 mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F2,0));


Message édité par veryfree le 30-11-2004 à 13:04:07
Reply

Marsh Posté le 30-11-2004 à 13:03:51   

Reply

Marsh Posté le 30-11-2004 à 14:34:00    

Surtout ton problème (je pense) vient du fait que tu n'as pas compris qu'il faut attacher ton listener à ta frame principale : en gros, là tu lui dis d'écouter, notamment si la touche F1 est enfoncée, mais tu ne lui dis pas où!
Du coup, il ne fait rien... et c'est normal.
 
Faut créer un Listener, mais faut également le rattacher à ton container (Frame principale, applet, composant quelconque, TextField) ainsi lorsqu'un évenement se produira sur ton container, il le renvoie à tous ses Listeners et chacun d'eux regardent si ça le concerne.
Si tu appuies sur F1 alors que ton container est actif, alors ton Listener renverra bien ton action (print de "F1 appuyé" )
Ok?


Message édité par LeMicky le 30-11-2004 à 14:34:50
Reply

Marsh Posté le 30-11-2004 à 15:41:44    

Salut !
OK je vais essayer toutes vos solutions et je vous dis quoi...
Merci

Reply

Marsh Posté le 30-11-2004 à 19:10:17    

Bonsoir,
alors voila j'ai testé un peu  :pt1cable:  
 

Citation :

ben fait une menubar et dans tes menuitem tu ajoute des "accelerator":  
 
mi = new JMenuItem("mon menu qui doit demarrer par F2" );  
 mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F2,0));

Peux tu me donner l'équivalent pour un MenuBar et un MenuItem et non pour un JMenuBar et un JMenuItem car je ne trouve pas...en fait j'ai fait toute mon appli en AWT alors mettre du swing pour ca...c'est bête non ? sinon je le ferai mais bon si je peux éviter ca serait mieux  :D Sinon ca compile merci ;)  
 

Citation :

Surtout ton problème (je pense) vient du fait que tu n'as pas compris qu'il faut attacher ton listener à ta frame principale : en gros, là tu lui dis d'écouter, notamment si la touche F1 est enfoncée, mais tu ne lui dis pas où!  
Du coup, il ne fait rien... et c'est normal.  
 
Faut créer un Listener, mais faut également le rattacher à ton container (Frame principale, applet, composant quelconque, TextField)

Ok pas de problème mais pour le ratacher à la Frame il ne faut pas faire uniquement que addKeyListener dans la classe suivi de la définition ??
 
Merci ! :bounce:  
 

Reply

Marsh Posté le 30-11-2004 à 19:55:41    

Peux tu me donner l'équivalent pour un MenuBar et un MenuItem
 
 
non

Reply

Marsh Posté le 30-11-2004 à 20:43:37    

Bon ben OK...
c'est pas grave je vais intégrer un menu SWING dans l'application AWT enfin je vais essayer que tout ca fonctionne correctement...
Merci quand même !

Reply

Marsh Posté le 30-11-2004 à 23:26:29    

c'est pas la premiere fois que tu demande un truc tout fait, ca soule.
ca te prend 3 sec en cherchant dans la javadoc.

Reply

Marsh Posté le 01-12-2004 à 10:58:13    

niouts a écrit :

Ok pas de problème mais pour le ratacher à la Frame il ne faut pas faire uniquement que addKeyListener dans la classe suivi de la définition ??
 
Merci ! :bounce:


 
Alors là je ne sais plus, ça fait style 5 ans que je n'ai pas attaché de Listener à quoi que ce soit alors... faut regarder la doc (javadoc, tutorial java) y a sûrement des exemples et explications, mais je t'ai donné l'idée générale.

Reply

Marsh Posté le 01-12-2004 à 11:04:54    

OK Merci !

Reply

Marsh Posté le 01-12-2004 à 11:59:12    

Citation :

c'est pas la premiere fois que tu demande un truc tout fait, ca soule.  
ca te prend 3 sec en cherchant dans la javadoc.

Désolé si tout le monde n'est pas bilingue comme toi...j'avais précisé (en tout cas les autres fois je crois) que j'étais un débutant. Mais ce n'est pas grave, j'ai regardé la javadoc et j'ai trouvé comme tu me l'as dit donc merci ! et désolé d'être débutant  :(  
 
par contre je voulais avoir quelques infos sur les raccourcis claviers...
Aparemment avec ce code, il faut forcemment un raccourcis du style : Ctrl + Maj + F1 (par exemple)

Code :
  1. MenuItem Aide = new MenuItem ("Aide" );
  2. Aide.setShortcut(new MenuShortcut(KeyEvent.VK_F1,true));

Donc il doit exister surement une autre manière de faire pour que l'on puisse utiliser F1 comme raccourci...
mais j'ai cherché et je n'ai pas trouvé !  
quelqu'un pourrait m'aider ??
Merci ! :bounce:  

Reply

Marsh Posté le 01-12-2004 à 13:00:24    

celui ci marche:
mi = new JMenuItem("mon menu qui doit demarrer par F1" );
 mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1,0));


Message édité par veryfree le 01-12-2004 à 13:00:40
Reply

Marsh Posté le 01-12-2004 à 14:50:16    

niouts a écrit :

Citation :

par contre je voulais avoir quelques infos sur les raccourcis claviers...
Aparemment avec ce code, il faut forcemment un raccourcis du style : Ctrl + Maj + F1 (par exemple)

Code :
  1. MenuItem Aide = new MenuItem ("Aide" );
  2. Aide.setShortcut(new MenuShortcut(KeyEvent.VK_F1,true));

Donc il doit exister surement une autre manière de faire pour que l'on puisse utiliser F1 comme raccourci...
mais j'ai cherché et je n'ai pas trouvé !  
quelqu'un pourrait m'aider ??
Merci ! :bounce:




Là encore c'est au niveau de ton Listener que tu dois faire qqchose : Suffit que tu lui dises que quand le gars tape F1, tu envoies un Event (KeyPressed je suppose) Ctrl+F1 à ton MenuItem Aide (tu mets Aide.setShortcut(new MenuShortcut(KeyEvent.VK_F1,false)); au lieu de "true" et y a pas de SHIFT, voir javadoc)
 
Faut se montrer créatif , t'as ton shortcut qui est forcément Ctrl+"qqchose", toi tu veux que ça se déclenche quand c'est "qqchose" (sans le CTRL), ben suffit de transformer le "qqchose" en "CTRL+qqchose".
C'est bête comme chou. Faut pas se laisser abattre par si peu...


Message édité par LeMicky le 01-12-2004 à 14:51:37
Reply

Marsh Posté le 02-12-2004 à 16:23:34    

Ben en fait je voulais simplement vous remercier pour vos réponses...ca ma beaucoup aidé ;)
donc pour infos j'ai fais tout mes raccourcis avec Ctrl + qqch et puis sinon il y a les autres solutions qui ont été proposées...
Voila Encore Merci !

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed