Я делаю игру с тремя основными панелями и несколькими подпанелями, и я не понимаю, как вы «соединяете» панели и их данные.
У меня есть основной класс, который расширяет JFrame и добавляет три панели JPanel. Каждая из этих панелей является подклассом JPanel. (Пример: JPanel gameControlPanel = new GameControlPanel(), где GameControlPanel — это класс, который я создал для расширения JPanel.)
Теперь все игровые данные (такие как состояние игры и два массива, в которых хранятся сохраненные игроки и сохраненные результаты) находятся на игровой панели. Но мне нужно получить и установить эти данные с двух других панелей. И как это сделать ускользает от меня.
** Итак, мой вопрос: как мне это сделать? Как я могу получить доступ к данным в одном подклассе JPanel из другого подкласса JPanel (который имеет тот же родительский JFrame)?
Если это поможет, это код расширенного класса JFrame, где я добавляю три панели...:
JPanel controlButtonsPanel = new GameControlButtons();
controlButtonsPanel.setPreferredSize(new Dimension(801,60));
controlButtonsPanel.setBorder(new LineBorder(Color.white, 1));
constraints.anchor = GridBagConstraints.NORTHWEST;
constraints.weightx = 2;
constraints.weighty = 0.3;
this.add(controlButtonsPanel, constraints);
JPanel gameDataPanel = new GameDataPanel();
gameDataPanel.setPreferredSize(new Dimension(500,838));
gameDataPanel.setBorder(new LineBorder(Color.white, 2));
constraints.anchor = GridBagConstraints.NORTHEAST;
constraints.weightx = 1;
constraints.weighty = 2;
this.add(gameDataPanel, constraints);
JPanel graphicsPanel = new RoofRunnerGame("Ken");
constraints.anchor = GridBagConstraints.SOUTHWEST;
constraints.weightx = 2;
constraints.weighty = 1;
graphicsPanel.setBorder(new LineBorder(Color.white, 1));
graphicsPanel.setPreferredSize(new Dimension(800,800));
graphicsPanel.requestFocus();
this.add(graphicsPanel, constraints);
GraphicsPanel содержит все эти данные:
private ArrayList<Player> savedPlayers; // Holds saved data for player's who paused and exited game.
private ArrayList<Player> savedScores; // Holds high scores from player's who played game and died.
private ArrayList<Birds> birdList = new ArrayList<Birds>(); // Not serialized due to its randomness and unimportance to player.
private ArrayList<Clouds> cloudList = new ArrayList<Clouds>(); // Not serialized due to its randomness and unimportance to player.
private Player gamePlayer; // Player object that holds all data for a game instance.
И я хочу получить доступ к этим данным из двух других панелей (класса gameDataPanel и класса gameControlButton).