[JAVA] Pb recuperation evenement clavier

Pb recuperation evenement clavier [JAVA] - Java - Programmation

Marsh Posté le 22-06-2004 à 11:37:24    

Salut,
 
Je fais une ptite appli en swing/awt j'ai un petit soucis avec la recuperation des evenements claviers.
 
J'ai une classe Main qui contient juste la fonction main, une classe Principale qui est extends de JFrame qui represente donc la frame principale et une classe MyStatusBar qui represente la barre d'etat.
 
Dans la barre d'etat j'affiche l'etat des touches MAJ et NUM (comme dans word par exemple)  
 
La classe principale possede en donnée membre une instance de MyStatusBar.
 
Donc ce que je veux faire, c'est mettre a jour l'etat des bouton MAJ(CAPS_LOCK) et NUM (NUM_LOCK) dans ma barre d'etat. J'ai deja trouver le moyen de recuperer l'etat de ces boutons et j'ai donc dans ma classe MyStatusBar une fonction toggle qui permet de modifier l'affichage de la barre d'etat.  
 
Mais le probleme c'est que je n'arrive pas a recuperer les evenements claviers...j'ai essayer en faisant un implements KeyListener sur la classe MyStatusBar, Principale et Main mais rien a faire ...ca marche pas ...
 
Donc si qq un avait une idée ca serait sympa...
 
Voici les declarations de mes classes actuelles :

Code :
  1. public class Principale extends JFrame implements /*KeyListener,*/ OutlookBarSelectionListener  {


 

Code :
  1. public class Main  /*implements KeyListener*/{


 

Code :
  1. public class MyStatusBar extends JPanel /*implements KeyListener*/{


 
Merci @+

Reply

Marsh Posté le 22-06-2004 à 11:37:24   

Reply

Marsh Posté le 22-06-2004 à 15:17:19    

ca n'inspire personne apparement...le probleme c'est que moi non plus ...

Reply

Marsh Posté le 22-06-2004 à 16:24:02    

salut boubavic,
 
a tu bien enregistré (via la méthode addKeyListener) ton instance de MyStatusBar (qui implement keylistener) dans ta JFrame, pour que
MyStatusBar reçoit les événements clavier.

Reply

Marsh Posté le 22-06-2004 à 16:36:49    

non je ne l'avais pas fait ...mais ca marche pas mieux ...j'arrive meme pas a recup 1 evenement clavier quelqu'il soit dans la frame principale ... je comprends pas trop le soucis ...

Reply

Marsh Posté le 22-06-2004 à 17:16:13    

Je viens de coder un truc vite fait j’espère que cela va d’aider. Cela affiche de l’info sur la touche pressée.  
 

Code :
  1. public class Test extends JFrame
  2. {
  3. JTextArea mTextArea;
  4. // -------------------------------------------
  5. // CONSTRUCTEUR
  6. // -------------------------------------------
  7. public Test()
  8. {
  9.  init();
  10. }
  11. //-------------------------------------------
  12. // methodes
  13. //-------------------------------------------
  14. private void init()
  15. {
  16.  mTextArea = new JTextArea("vide" );
  17.  mTextArea.setEditable( false );
  18.  this.getContentPane().add( mTextArea );
  19.  this.addKeyListener( new KeyAdapter()
  20.   {
  21.    public void keyPressed(KeyEvent aKeyEvent)
  22.    {
  23.     mTextArea.setText( aKeyEvent.paramString() );
  24.    }
  25.   }
  26.  );
  27.  this.addWindowListener( new WindowAdapter()
  28.  {
  29.   public void windowClosed(WindowEvent aWindowEvent)
  30.   {
  31.    System.exit( 0 );
  32.   }
  33.  }
  34.  );
  35.  this.pack();
  36. }
  37. //-------------------------------------------
  38. // main
  39. //-------------------------------------------
  40. public static void main(String[] args)
  41. {
  42.  Test oTest = new Test();
  43.  oTest.show();
  44. }
  45. }

Reply

Marsh Posté le 22-06-2004 à 17:20:01    

le soucis c'est que ma status bar n'est pas un objet comme un JTextField ou un JTextArea... c'est un JPanel ... donc peut qu'il doit falloir mettre un focus dessus ...mais ca serait idiot ...franchement j'ai du mal a comprendre ce qui cloche ...

Reply

Marsh Posté le 22-06-2004 à 17:32:57    

re voici un autre bout de code avec un jtextarea dans un classe qui dérive d'un JPanel ( pour vaguement simuler MyStatusBar).
Par contre si cela d'aide toujours pas il faudrait que publie ton code sur le forum
 
 

Code :
  1. public class Test extends JFrame
  2. {
  3. JMyPanel mMyPanel;
  4. // -------------------------------------------
  5. // CONSTRUCTEUR
  6. // -------------------------------------------
  7. public Test()
  8. {
  9.  init();
  10. }
  11. //-------------------------------------------
  12. // methodes
  13. //-------------------------------------------
  14. private void init()
  15. {
  16.  mMyPanel = new JMyPanel();
  17.  this.getContentPane().add( mMyPanel );
  18.   this.addKeyListener( new KeyAdapter()
  19.   {
  20.    public void keyPressed(KeyEvent aKeyEvent)
  21.    {
  22.     mMyPanel.setText( aKeyEvent.paramString() );
  23.    }
  24.   }
  25.  );
  26.  this.addWindowListener( new WindowAdapter()
  27.  {
  28.   public void windowClosed(WindowEvent aWindowEvent)
  29.   {
  30.    System.exit( 0 );
  31.   }
  32.  }
  33.  );
  34.  this.pack();
  35. }
  36. //-------------------------------------------
  37. // main
  38. //-------------------------------------------
  39. public static void main(String[] args)
  40. {
  41.  Test oTest = new Test();
  42.  oTest.show();
  43. }
  44. }
  45. -----------------------------------------------------------
  46. public class JMyPanel extends JPanel
  47. {
  48. JTextArea mTextArea;
  49. //----------------------
  50. // CONSTRUCTEUR
  51. //----------------------
  52.   public JMyPanel()
  53.   {
  54. init();
  55.   }
  56.  
  57. //-----------------------
  58. // methodes
  59. //-----------------------
  60. private void init()
  61. {
  62.  mTextArea = new JTextArea("vide" );
  63.  mTextArea.setEditable( false );
  64.  this.add( mTextArea );
  65. }
  66. public void setText( String aString )
  67. {
  68.  mTextArea.setText( aString );
  69. }
  70. }

Reply

Marsh Posté le 22-06-2004 à 17:54:01    

je vais voir ce que ca donne merci de te decarcasser pour moi

Reply

Sujets relatifs:

Leave a Replay

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