В настоящее время у меня есть JFrame, который я разделил на три JSplitPanes (один из них разбит вертикально по середине, а на левой панели - горизонтальный раскол). У меня есть функциональная игра в левой панели, которая отлично работает, когда запускается сама по себе в своем JFrame, но когда она помещается в JSplitPane, слушатели действий на клавишах не работают в игре, но моя пробел работает как нажатие кнопки запуска на другой панели.Как настроить прослушиватели клавиш для работы в конкретной панели в JSplitPane, сделанной для JFrame?
Ниже я публикую раздел кода, который касается разделенных панелей. Мой вопрос в том, есть ли способ сделать так, чтобы ключевые слушатели игры работали? Также есть способ заставить слушателя кнопки запуска работать, одновременно поддерживая игру, но переключая функцию кнопки, которая будет активирована, когда вы нажимаете «r» вместо пробела?
(Быстрое изложение переменных в коде. «Плата» на самом деле является новым экземпляром игры, которая активируется в другом классе, она рисует доску и начинает игру, когда вы нажимаете кнопку запуска. «GameTable» - является JPanel на левой стороне, которая содержит кнопку запуска и быстрое название. «Статистика» просто имеет некоторые неинтерактивные вещи, как оценки и высокие баллы.)
//Creates a new game and assigns it to the GameTable JPanel
GameTable.add(board, BorderLayout.SOUTH);
/* NOTE:
* The Vertical and Horizontal SplitPanes are flipped.
* The GameTableHorizontal uses the JSplitPane.VERTICAL_SPLIT function but splits horizontally
* The opposite is true for the VerticalSplitPane
* The cause for this is still unknown
*/
//Adds GameTable JPanel and board to GameTableHorizontal SplitPane and adds that to JFrame
GameTableHorizontal = new JSplitPane(JSplitPane.VERTICAL_SPLIT, true, GameTable, board);
GameTableHorizontal.setDividerLocation(50);
GameTableHorizontal.setEnabled(false);
this.add(GameTableHorizontal);
//Adds GameTableHorizontal and Statistics JPanels to VerticalSplitPane and adds that to JFrame
VerticalSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true, GameTableHorizontal, Statistics);
VerticalSplitPane.setDividerLocation(xPos/2);
VerticalSplitPane.setEnabled(false);
this.add(VerticalSplitPane);
//Creates a start button and assigns an ActionListener to it
Start = new JButton("Start");
StartListener actionStart = new StartListener();
Start.addActionListener(actionStart);