#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");