joduak
Messages postés194Date d'inscriptionlundi 11 juillet 2005StatutMembreDernière intervention13 avril 2007
-
12 avril 2006 à 17:58
bloofi
Messages postés388Date d'inscriptionmercredi 1 octobre 2003StatutMembreDernière intervention 3 mai 2006
-
13 avril 2006 à 02:17
Bonjour,
Comme le sujet l'indique j'ai un énorme problème d'écoute clavier...:p
En fait j'ai construit une classe "EcouteClavier" qui définit ma
fenêtre avec les 3 méthodes KeyTyped, KeyPressed, keyReleased, et qui
fonctionne très bien tout seul quand je définis mon main de la façon
suivante :
static public void main(String argv[])
{
EcouteClavier app = new EcouteClavier();
app.setVisible(true);
}
Maintenant j'essaie d'insérer ce code dans un "gros programme" où mon main est long.
Je souhaiterai récupérer l'évènement de ma classe précédente "EcouteClavier" dans mon main pour traiter l'évènement.
Dans mon gros programme il y aurait ainsi:
class programme {
static public void main(String argv[])
{
//Toutes les initialisations de mon programme
....
//Objet d'écoute
EcouteClavier app = new EcouteClavier();
app.setVisible(true);
while(true) {
//Recupération de l'évenement e
if( e.getKeyChar() == 'p')
System.out.println("Je peux executer mes taches car
l' evenement a bien été récupéré !");
}
}
}
Voilà mon problème et je suis dessus depuis fort longtemps...donc je me permets de vous demander votre aide !
Si il y a une feinte, une technique, une astuce ou que tout simplement vous avez des idées, je suis tout ouï !!!
bloofi
Messages postés388Date d'inscriptionmercredi 1 octobre 2003StatutMembreDernière intervention 3 mai 20062 12 avril 2006 à 18:49
Coucou,
tout ce qui se situe apres l'instruction "setVisible(true)" ne s'effectuera qu'apres que la fenetre (app) soit fermée (cette méthode est bloquante)
bloofi
Messages postés388Date d'inscriptionmercredi 1 octobre 2003StatutMembreDernière intervention 3 mai 20062 12 avril 2006 à 19:51
dans ce cas la dans EcouteClavier :
public class EcouteClavier extends JFrame implements KeyListener {
public EcouteClavier(){
....
this.addKeyListener(this);
}
public void keyTyped(KeyEvent e){}//recuperation event
public void keyPressed(KeyEvent e){}//recuperation event
public void keyReleased(KeyEvent e){}//recuperation event
joduak
Messages postés194Date d'inscriptionlundi 11 juillet 2005StatutMembreDernière intervention13 avril 2007 12 avril 2006 à 20:59
Je ne pense pas avoir bien compris ce que tu me dis (désolé)
Est comme cela que ma classe programme doit etre faite d'après toi?
class programme implements KeyListener
{
static public void main(String argv[])
{
//Toutes les initialisations de mon programme
....
//Objet d'écoute
EcouteClavier app = new EcouteClavier();
app.addKeyListener(this)
while(true)
{
//Recupération de l'évenement e
if( e.getKeyChar() == 'p')
System.out.println("Je peux executer mes taches car l' evenement a bien été récupéré !");
}
}
public void keyTyped(KeyEvent e){}//recuperation event
public void keyPressed(KeyEvent e){}//recuperation event
public void keyReleased(KeyEvent e){}//recuperation event
}
et ma classe EcouteClavier ne contient qu'un constructeur qui créé une JFrame?
C'est un peu flou pour moi...
Désolé de te faire perdre du temps...je débute ! :S
joduak
Messages postés194Date d'inscriptionlundi 11 juillet 2005StatutMembreDernière intervention13 avril 2007 12 avril 2006 à 21:45
ok mais par contre eclipse me dit à la ligne de app.addKeyListener(this);
"cannot use this in a static context"
J'imagine que c'est parce qu'il est déclaré dans le main et que le main est en static...
Le mettre au dessus des méthodes
public void keyTyped(KeyEvent e){}//recuperation event
public void keyPressed(KeyEvent e){}//recuperation event
public void keyReleased(KeyEvent e){}//recuperation event
me donne une erreur aussi.
joduak
Messages postés194Date d'inscriptionlundi 11 juillet 2005StatutMembreDernière intervention13 avril 2007 13 avril 2006 à 02:13
Salut,
Voilà j'ai essayé de faire comme tu m'as dit...
J'ai tout mis dans :
public programme (){
//ici tout le code qu'il y a dans la methode main
}
qu'il s'agisse de ce que j'avais dans mon main ou dans mon constructeur de EcouteClavier.
J'ai mis après mon main les définitions de :
public void keyTyped(KeyEvent e){}//recuperation event
public void keyPressed(KeyEvent e){}//recuperation event
public void keyReleased(KeyEvent e){}//recuperation event
et dans mon main() j'ai mis :
programme action = new programme();
action.setVisible(true);
Et ça marche, j'ai ma fenêtre qui s'affiche comme dans mon test de EcouteClavier seul.
Par contre...quand je fais dans mon ' keyPressed()' :
if( e.getKeyChar() == 'p')
{
System.out.println("Je peux executer mes taches car l' evenement a bien été récupéré !");
//+ Suite de code utilisant les variables initialisées dans ma class programme
//...
}
si j'appuie sur 'p' j'ai bien mon message dans ma console, mais la suite du code ne marche pas puisque le compilateur ne connait aucune des variables !!
Comment faire pour que toutes mes variables soient connues?