"Słuchanie" klawiatury i przycisków jednocześnie. Utrata kontroli

0

Piszę pewną prostą grę w Javie całą rozgrywkę mam już zrobioną, jednak mam problem z obsługą przycisków które są obok pola gry (np. restart, pauza). Problem taki, że po naciśnięciu przycisku gra przestaje reagować na przyciski z klawiatury.

Sytuacja wygląda tak:
Mam klasę Board dziedziczącą po JPanel i implementującą actionListener.
Wewnątrz tej klasy mam klasę KAdapter dziedziczącą po KeyAdapter - obsługuje klawiaturę.
Wewnątrz konstruktora Board mam:
addKeyListener(new TAdapter()); i uruchomienie timera z konkretnym opóźnieniem.

Później w actionPerformed "poruszam grą", sprawdzam warunki itd.
Niezależnie od tego, czy do przycisku dodam actionPerformed, czy jest sobie taki "pusty" przycisk, to naciśnięcie dowolnego przycisku powoduje utratę kontroli nad grą.
To są moje początki z Javą, więc zapewne popełniłem jakiś błąd w podejściu do tematu, ale nie mogę nic konkretnego znaleźć...

0

Nie znam się na Javie, ale w innych językach czasem, gdy aktywujesz coś innego ,tracisz kontrolę nad tym pierwszym. Może musisz aktywować to pierwsze czyli tamtą grę.

0

Właśnie zapomniałem dopisać, to wygląda identycznie jak wtedy kiedy zapomniałem w konstruktorze Board dodać setFocusable(true), ale mi szczerze mówiąc niewiele to daje, bo nadal nie mogę sobie z tym poradzić.

0

Ach ci studenci i ich problemy... czemu ja takich nie miałem...
a może to dlatego, że przeczytałem oficjalne tutoriale Suna o Javie zanim zacząłem bawić się w gry?

kto wie?

0

Też je czytałem, ale niestety w miesiąc nie dałem rady przeczytać wszystkiego. Dzięki za konkretny link, nie wiem czy to jedyne rozwiązanie, czy dalej były jeszcze jakieś inne, ale pomogła linijka
Przycisk.setFocusable(false);

0

Brawo...

Oprócz tego jest jeszcze jedno... dodać ActionListener do przycisku, który zrobi komponentGry.requestFocusInWindow()

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