Récuperer touche clavier KeyListener

Signaler
Messages postés
12
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
18 avril 2006
-
Messages postés
12
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
18 avril 2006
-
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

Messages postés
545
Date d'inscription
lundi 10 mai 2004
Statut
Membre
Dernière intervention
28 septembre 2011
2
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
Messages postés
545
Date d'inscription
lundi 10 mai 2004
Statut
Membre
Dernière intervention
28 septembre 2011
2
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
Messages postés
12
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
18 avril 2006

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