KeyListener i setFocusable()

0

Mam problem ze zdarzeniami klawiszy.

addKeyListener(new KeyListener() {
  public void keyPressed(KeyEvent zdarzenie) {
    int kodKlawisza = zdarzenie.getKeyCode();
    if (kodKlawisza == KeyEvent.VK_ENTER) 
      System.out.println("blablabla");
    }
    public void keyTyped(KeyEvent e) {}
    public void keyReleased(KeyEvent e) {}
});

Natomiast setFocusable(true); ustawiam w klasie Panelu do którego dodaję komponenty Swinga.
I na początku KeyListener, tzn zdarzenie przy naciskaniu entera działa, ale jeśli np wpiszę coś w pole tekstowe i znowu nacisnę enter - to KeyListener już nie działa... to ma związek z setFocusable(true)?

0

Raczej focusable nie ma tutaj nić do rzeczy. Jak masz focusa w komponencie JTextField to zdarzenia naciśnięcia klawiszy są do niego przekazywane. Także wtedy wywołują się KeyListenery pola textowego, a nie panelu na którym on leży ;)

0

no jeśli nie ustawię focusable na panelu głównym to zdarzenie klawisza w ogóle nie działa...
jak rozwiązać ten problem? :)

0

A więc musisz dodać keyListener do panelu jak i do pola, a najlepiej do wszystkich komponentów w danych oknie.

0

dzięki! pomogło :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1