Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    107

    Problema con KeyListener

    Ciao!!!
    Ho il seguente problema: ho una classe che mi gestisce l'evento scatenato dalla pressione dei tasti freccia della tastiera. L'ascoltatore realizzato l'ho aggiunto ad un pannello.
    Il problema è che quando premo i tasti freccia non fa niente, non rileva l'evento.
    Questo è il codice:
    codice:
    class KeyListener extends KeyAdapter{
    		
    		public void keyPressed(KeyEvent ke){
    			if(ke.getKeyCode( )== KeyEvent.VK_UP){
    				System.out.println("Spostamento in alto");
    			}else if(ke.getKeyCode( ) == KeyEvent.VK_DOWN){
    					System.out.println("Spostamento in basso");
    			}
    		}
    	}
    Cosa sbaglio????

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Problema con KeyListener

    Originariamente inviato da Azzurra85
    ho una classe che mi gestisce l'evento scatenato dalla pressione dei tasti freccia della tastiera. L'ascoltatore realizzato l'ho aggiunto ad un pannello.

    Cosa sbaglio????
    http://forum.html.it/forum/showthrea...readid=1214948
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    107
    Andando a vedere quello che consigliavi sul link che mi hai consigliato di guardare, io ho chiamato per il pannello al quale aggiungo l'ascoltatore, setFocusable(true) ma non funziona niente lo stesso!!!!
    Cosa devo fare allora???

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Azzurra85
    Andando a vedere quello che consigliavi sul link che mi hai consigliato di guardare, io ho chiamato per il pannello al quale aggiungo l'ascoltatore, setFocusable(true) ma non funziona niente lo stesso!!!!
    Un JPanel di per sé non è stato pensato per l'input da tastiera .... cioè non è di norma un componente per l'input. Ecco perché per default non é focusable!!!
    Se lo rendi focusable, ok, può ricevere l'input da tastiera. Ma devi anche dargli il focus!!! Ci sono altri componenti di input nella tua interfaccia?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    107
    No non ci sono altri componenti di input nell'interfaccia del pannello al quale aggiungo all'ascoltatore. A tale pannello vado poi ad aggiungere altri pannelli nei quali possono venire lanciati dei JInputDialog.

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Azzurra85
    No non ci sono altri componenti di input nell'interfaccia del pannello al quale aggiungo all'ascoltatore. A tale pannello vado poi ad aggiungere altri pannelli
    Che non sono focusable, giusto??

    Comunque ripeto: una cosa è che sia focusable (cioè può avere il focus) e un'altra è che ce l'abbia per davvero il focus!!! Puoi fare panel.requestFocusInWindow() per dargli il focus e se vuoi darglielo anche tramite click sul pannello, devi registrare un MouseListener e nel mouseClicked fare quello.

    E se ci fossero altri componenti che possono "fregare" il focus al pannello, beh, devi saperlo tu.

    Originariamente inviato da Azzurra85
    lanciati dei JInputDialog.
    E che roba è?? Forse intendevi un JOptionPane???
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    107
    [cite]
    una cosa è che sia focusable (cioè può avere il focus) e un'altra è che ce l'abbia per davvero il focus!!! Puoi fare panel.requestFocusInWindow() per dargli il focus
    [/cite]

    Si scusami intendevo un JOptionPane di tipo InputDialog, si cmq non ho nessun altro componente con il focus.
    Ecco ora ho capito dovevo dargli effettivamente il focus chiamando requestFocusInWindow(), grazie, non sapevo questo!!!!

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    107
    Problemino: ho visto che se se il pannello a cui aggiungo l'ascoltatore KeyListener ottiene il focus vero, e tale pannello è formato da più componenti che nel caso mio al pannello con l'ascoltatore aggiungo altri pannelli il focus passa ai suoi componenti, come possa fare a non far avvenire questo??? Vorrei che l'azione che compio alla pressione di una freccia venisse eseguita una volta e non tante volte quanti sono i componenti che ho aggiunto al pannello con ascoltatore!!

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Azzurra85
    Problemino: ho visto che se se il pannello a cui aggiungo l'ascoltatore KeyListener ottiene il focus vero, e tale pannello è formato da più componenti che nel caso mio al pannello con l'ascoltatore aggiungo altri pannelli il focus passa ai suoi componenti
    No ... allora chiariamo. Tu hai un JPanel che rendi focusable (e sui cui registri il KeyListener). Se questo pannello contiene solo altri JPanel non focusable, non ci sono e non vedo problemi ... il focus può averlo solo il JPanel principale!!!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.