Récuperer touche clavier KeyListener

ivanohe5 Messages postés 12 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 18 avril 2006 - 28 sept. 2005 à 02:34
ivanohe5 Messages postés 12 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 18 avril 2006 - 28 sept. 2005 à 11:06
salut tlm



Mon but est de récuperer les touche clavier tapées par l'utilisateur aprés que mon prog soit lancé



ma source:





import java.awt.Component;

import java.awt.Container;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import java.awt.event.WindowEvent;

import java.io.BufferedOutputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.PrintStream;





import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;





public class KeyLog extends JFrame implements ActionListener,KeyListener{



Container c;

JPanel pan;



JButton go;



private static final long serialVersionUID = 1L;



public KeyLog(){

c = getContentPane();

go=new JButton("GO");

pan=new JPanel();





c.add(pan);

pan.add(go);



pan.requestFocusInWindow();



go.addActionListener(this);

pan.addKeyListener(this);



setTitle("java KeyLogger by ghostdog");

setSize(500,500);

setVisible(true);



addWindowListener(new java.awt.event.WindowAdapter() {

public void windowClosing(WindowEvent e) {



System.exit(1);



}

});





}//fin cons



public void actionPerformed(ActionEvent event) {



Component c = (Component) event.getSource();

if(c instanceof JButton)

{



if((JButton) c==go)

{

System.out.println("hjk");

}





}//fin if



}//fin listener



public void keyTyped(KeyEvent event) {





/*



FileOutputStream fos = null;

try {

fos = new FileOutputStream("log.txt");

} catch (SecurityException e) {

} catch (FileNotFoundException e) {

}

BufferedOutputStream bos = new BufferedOutputStream(fos);

PrintStream ps = new PrintStream(bos);

ps.println(event.getKeyChar());

*/System.out.println(event.getKeyChar()+"hjk");



}



public void keyPressed(KeyEvent event) {

System.out.println("ghhjghjhjhgj");}





pourtant qd je lance l'api rien ne se passe lorsque je tape une touche les méthodes de l'interface ne sont jamais lancé !!!!!

Ceci est trés proche du tuto de sun ?!!!!!!

3 réponses

gmi19oj19 Messages postés 545 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 28 septembre 2011 2
28 sept. 2005 à 09:32
Déjà, une petite remarque : un ActionListener global, c'est bourrin et
pas propre, surtout si t'as une petite dizaine de composants. :/



De même pour le instancef => un cast dans un bloc try/catch avec capture d'une ClassCastException, c'est plus propre^^



Ensuite, pour ton problème :



ps.println(event.getKeyText(event.getKeyCode()));

gmi19oj19
0
gmi19oj19 Messages postés 545 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 28 septembre 2011 2
28 sept. 2005 à 09:35
Arf, je viens de voir une autre possiblité pour ton problème :

Dans ton main(), fais tu bien



taFrame.getContentPane().addKeyListener(taFrame) ??



Parce que si tu places le KeyListener sur une Frame, et qu'elle a un menu, c'est le menu qui chope les KeyEvent -_-°


gmi19oj19
0
ivanohe5 Messages postés 12 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 18 avril 2006
28 sept. 2005 à 11:06
merci de répondre mais



je fais déjà un addListener sur mon panel

je viens d'éssayer avec le getcontentPane et rient ne marche

En faite si tu regarde, lors de test meme un System.out.println() de se lance pas

les methodes Keytipe pressed ... ne se lance pas alors qu'il y a
bien le addListener il doit y avoir une erreur dans le code mais où ...

Ou alors on ne peut pas utiliser un KeyListener sur une JFrame ?????? mais bon .... ce serait un pe leger
0
Rejoignez-nous