Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - Come creare KeyListener per un frame
Forum - Java - Come creare KeyListener per un frame

Avatar
Nevinyrral (Normal User)
Newbie


Messaggi: 13
Iscritto: 28/04/2011

Segnala al moderatore
Postato alle 19:33
Domenica, 18/08/2013
Salve a tutti e grazie per aver dedicato tempo al mio problema.
In pratica quello che vorrei ottenere è far si che premendo un tasto sulla tastiera il quando un jframe ha il focus  venga richiamato un metodo, il problema è che ho cercato su internet una guida o un sorgente che mi spiegasse come fare ma ogni volta era richiesta la presenza di un altro oggetto come una textarea dove,scrivendoci dentro,  il KeyListener traeva l'id della key premuta.
Ho visto già altri programmi in java che premendo escape senza selezionare nulla uscivano dal programma quindi si può sicuramente fare ma non so come.
Grazie per ogni risposta:)

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 20:47
Domenica, 18/08/2013
Perdonami il codice

Premendo invio o spazio verrà mostrato un messaggio, premendo ESC la finestra viene chiusa (le risorse vengono deallocate)
Codice sorgente - presumibilmente Java

  1. package test_key_frame;
  2.  
  3. import java.awt.event.KeyEvent;
  4. import java.awt.event.KeyListener;
  5. import javax.swing.JFrame;
  6.  
  7. public class Test_Key_Frame extends JFrame implements KeyListener{
  8.    
  9.     public Test_Key_Frame(){
  10.         this.setVisible(true);
  11.         this.setSize(640,480);
  12.         this.setLocationRelativeTo(null);
  13.         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  14.         this.addKeyListener(this);
  15.     }
  16.    
  17.     public static void main(String[] args) {
  18.         new Test_Key_Frame();
  19.     }
  20.    
  21.     @Override
  22.     public void keyPressed(KeyEvent ke) {
  23.         switch(ke.getKeyCode()){
  24.             case KeyEvent.VK_ENTER:
  25.                     printMessage("Invio premuto");
  26.                 break;
  27.  
  28.             case KeyEvent.VK_SPACE:
  29.                     printMessage("Spazio premuto");
  30.                 break;
  31.  
  32.             case KeyEvent.VK_ESCAPE:
  33.                     this.dispose();
  34.                 break;
  35.         }
  36.     }
  37.    
  38.     public void printMessage(String str){
  39.         System.out.println(str);
  40.     }
  41.    
  42.     @Override
  43.     public void keyTyped(KeyEvent ke) {
  44.     }
  45.  
  46.     @Override
  47.     public void keyReleased(KeyEvent ke) {
  48.     }  
  49. }


Ultima modifica effettuata da il 18/08/2013 alle 20:49
PM Quote
Avatar
Nevinyrral (Normal User)
Newbie


Messaggi: 13
Iscritto: 28/04/2011

Segnala al moderatore
Postato alle 21:12
Domenica, 18/08/2013
Grazie mille, ora riadatto il codice per le mie necessità, ma c'è qualche particolarità se il jframe non autonomamente si inizializza col metodo main ma il programma parte da un altra classe?!

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 21:47
Domenica, 18/08/2013
Se ho ben capito la domanda, non ci dovrebbero essere particolarità.

PM Quote
Avatar
Nevinyrral (Normal User)
Newbie


Messaggi: 13
Iscritto: 28/04/2011

Segnala al moderatore
Postato alle 22:23
Domenica, 18/08/2013
a no il problema che avevo era un altro, il container, grazie cmq

PM Quote