Strona 1 z 1

KeyListener i JPanel

Napisane: niedziela, 21 listopada 2010, 01:43
przez Piort
Witam
Proszę o wytłumaczenie dlaczego jeśli podłączam KeyListenera pod jakiś button to nie mam problemów. Ale jeśli próbuję to samo zrobić pod klasę która jest rozszerzona o JPanel to nie działa mi to jak trzeba.

Code: Zaznacz cały

class JakasKlasa extends JPanel {

   JakasKlasa() {
       // tu instrukcje 
       this.addKeyListener(new KeyListener()
        // tu sa zaimplementowane metody odpowiednie np:
            public void keyPressed(KeyEvent e) {
                if (e.getKeyCode() == KeyEvent.VK_RIGHT){
                    System.out.println("Prawo");
                } 
                if (e.getKeyCode() == KeyEvent.VK_LEFT){
                    System.out.println("Lewo");
                }
                if (e.getKeyCode() == KeyEvent.VK_DOWN){
                    System.out.println("Dół");
                }
                if (e.getKeyCode() == KeyEvent.VK_UP){
                    System.out.println("Góra");
                }
            })
   }
}
po naciśnięciu strzałek nie wykonują się żadne instrukcje System.out.println("..");

Nie rozumiem dlaczego niby nie zgłasza zadnego błedu i nie dziala. Może z JPanel trzeba zrobic to inaczej?
Pozdrawiam i dziękuję za pomoc.

Re: KeyListener i JPanel

Napisane: niedziela, 21 listopada 2010, 11:48
przez Morfidon
Aby element mógł odbierać jakieś zdarzenia, to musi być "aktywny", aktywność jest oznaczana wizualnie tak, że element jest np. "podświetlony". Przypatrz się na funkcje, które żądają focusa (skupienie). requestFocus, requestDefaultFocus etc.