Je crée un jeu avec trois panneaux principaux et quelques sous-panneaux, et je ne comprends pas comment vous "connectez" les panneaux et leurs données.Java - Interface graphique, panneau et accès aux données
J'ai ma classe principale, qui étend JFrame et ajoute trois JPanels. Chacun de ces panneaux est une sous-classe de JPanel. (Ex: JPanel gameControlPanel = new GameControlPanel(), où GameControlPanel est une classe que j'ai créée pour étendre JPanel.)
Maintenant, toutes les données du jeu (telles que l'état du jeu, et deux arraylists qui contiennent des joueurs sauvegardés et des scores sauvegardés)) est dans le panneau de jeu. Mais j'ai besoin d'obtenir et de définir ces données à partir des deux autres panneaux. Et comment le faire m'évite.
** Alors ma question est: comment je fais ça? Comment puis-je accéder aux données d'une sous-classe JPanel d'une autre sous-classe JPanel (ayant le même parent JFrame)?
Si elle aide, c'est le code de la classe JFrame étendu, où ajouter les trois panneaux ...:
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);
Le graphicsPanel tient toutes ces données:
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.
Et je veux accéder à ces données depuis l'intérieur des deux autres panneaux (la classe gameDataPanel et la classe gameControlButton).
Je ne comprends pas. Voir, j'ai toutes les données, et je veux le présenter dans les autres panneaux. Je ne sais pas comment l'obtenir pour que je puisse le présenter. –
Pourriez-vous me donner un exemple de la façon dont vous feriez mon programme: quelle classe étendrait JFrame et JPanels, et comment seraient-ils connectés? –
Veuillez lire cet article: http://java.sun.com/products/jfc/tsc/articles/architecture/ – spektom