Как запустить JPanel После переключения

#java #swing #keylistener #key-bindings #cardlayout

#java #качать #keylistener #привязки клавиш #cardlayout

Вопрос:

Я создаю клон Pong с меню и самой игрой. Я использую CardLayout для переключения между ними JPanels .

Однако, когда я переключаюсь из меню на доску (или игровую область), плата просто остается там и не принимает мои вводы с клавиатуры. Как мне запустить его или начать прослушивание ключа?

Исходный код: https://cg2916@github.com/cg2916/Pong.git

Комментарии:

1. На самом деле, я глупый. Я просто понял, что мне нужно запросить фокус.

2. Исходный код должен быть размещен на этом форуме. SSCCE должен быть коротким и простым.

Ответ №1:

Ответ (как рекомендовано вам ранее): не используйте KeyListener. используйте привязки клавиш.

Комментарии:

1. @Cg2916: Тогда фокус не должен иметь значения. Ваша ссылка на код выше недействительна. Тем не менее, лучше было бы создать и опубликовать небольшую тестовую программу, которая компилирует, запускает и демонстрирует проблему, sscce . это было бы полезно для вас, даже если вы не разместите его здесь, поскольку это значительно упростило бы вашу отладку.

Ответ №2:

requestFocusInWindow() должно сработать.

Ответ №3:

для CardLayout у слушателя должны быть эти коды

  CardLayout card=(CardLayout) JPanel_with_cardLayout.getLayout();
 card.show(JPanel_with_cardLayout,"cardname of card you want to switch");
  

пример:

 CardLayout card=(CardLayout) JPanel2.getLayout();
card.show(JPanel2,"card4");