hallo,
ich schreibe ein kartenspiel, im hauptmenu wird ein button geklickt um das Spiel zu starten. Dann wird der aktuelle inhalt des Jframes gelöscht und die tisch-GUI (ein Jpanel) hinzugefügt. das spiel startet dann sofort im konstruktor. di logik wartet immer auf usereingaben (ein button). das bedeuted dass sobald ich den tisch gezeichnet habe und die logik startet ist di gui noch nicht gezeichnet, di logik wartet aber auf die usereingabe. ich kenne z.b. die funktion inwokeandwait, dass zuerst der swing thread abgearbeitet wird. kann ich hier aber nicht einsetzen weil der button im hauptmenü (und somit ein edt) ja die tischgui hinzufügt. ich hoffe ihr habt mich verstanden, ich füg mal ein bisschen code hinzu. ich hoffe jemand kann mir helfen.
Hauptmenuframe:
TischGUIPanel:
ich schreibe ein kartenspiel, im hauptmenu wird ein button geklickt um das Spiel zu starten. Dann wird der aktuelle inhalt des Jframes gelöscht und die tisch-GUI (ein Jpanel) hinzugefügt. das spiel startet dann sofort im konstruktor. di logik wartet immer auf usereingaben (ein button). das bedeuted dass sobald ich den tisch gezeichnet habe und die logik startet ist di gui noch nicht gezeichnet, di logik wartet aber auf die usereingabe. ich kenne z.b. die funktion inwokeandwait, dass zuerst der swing thread abgearbeitet wird. kann ich hier aber nicht einsetzen weil der button im hauptmenü (und somit ein edt) ja die tischgui hinzufügt. ich hoffe ihr habt mich verstanden, ich füg mal ein bisschen code hinzu. ich hoffe jemand kann mir helfen.
Hauptmenuframe:
Java:
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
Object source = e.getSource();
if(source == startButton) {
this.remove(startButton);
this.add(tableGUIPanel);
this.pack();
tableGUIPanel.startGame();
}
}
TischGUIPanel:
Java:
public TableGUI() {
//Zeichnet Tisch
}
public void startGame() {
//die gamelogic, durchläuft eine schleife und wartet dabei auf usereingabe (buttons)
table = new Table();
table.addPlayer(human);
table.addPlayer(bot);
//startet spiel
table.startGame();
}