|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Dec 2008
Messaggi: 125
|
[JAVA] Domanda sui keyListener
io do il focus ad un pannello in modo tale da ricevere gli eventi da tastiera..E fin qui va tutto bene..poi però ad un certo punto metto qst pannello che ha il focus
invisibile e rendo visibile un altro pannello..poi per far ripartire il pannello iniziale(quello con il focus) non creo un altra istanza..ma faccio partire un metodo di quel pannello ed è tutto ok..in quanto mi visualizza il pannello..l'unico problema è che perdo il focus e non rileva più gli eventi da tastiera..Come mai? Come dovrei fare? N.B: I due pannelli sono aggiunti allo stesso frame |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Il pannello quando diventa invisibile perde il focus, quindi affinchè possa di nuovo diventare il "focus owner" è necessario:
1) rendere di nuovo visibile il pannello; 2) invocare il metodo requestFocusInWindows sul pannello. Estratto dai Javadoc: Quote:
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Dec 2008
Messaggi: 125
|
ma io lo rende prima visibile e dopo gli do il focus..Posto il codice in cui rendo visibile per un tot di tempo un pannello:
Codice:
public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(e.getSource()==timer){ pl.setVisible(true); //pl è il pannello che viene reso visibile solo per un tot di tempo } pl.setVisible(false); stopAnimation(); // in stop animation facciamo solo timer.stop() update(); // richiamo un metodo del pannelloG pg.requestFocusInWindow(); // do il focus al pannelloG pg.setVisible(true); //rendo visibile il pannelloG } ho provato anche ad aggiungere KeyListener al pannelloG .. ma niente.. Questo metodo viene implementato in PannelloG.. ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:55.