Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich bin ziemlich neu in der Java Programmierung und habe mir vorgenommen ein Tic Tac Toe mit einem Hauptmenu zu programmieren.
Das Hauptmenu habe ich mit dem JFrame realisiert.
Nun zu meinem Problem.
Ich habe im Hauptmenu den Button spiel STarten programmiert.
Java:
public class Window {
JFrame gameScreen;
JPanel menuButton;
JButton newGame;
public void erstelleFenster(MenuAuswahl menu) {
gameScreen = new JFrame();
gameScreen.setSize(300,300);
gameScreen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gameScreen.getContentPane();
gameScreen.setBackground(Color.black);
gameScreen.setLayout(null);
gameScreen.setResizable(false);
//Hauptmenu Panel
menuButton = new JPanel();
menuButton.setLayout(new GridLayout(1,1));
menuButton.setBounds(120,130,150,150);
newGame = new JButton("Spiel starten");
newGame.addActionListener(menu);
newGame.setActionCommand("start");
btnSpielBeenden.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
menuButton.add(newGame);
gameScreen.add(newGame );
gameScreen.add(hauptmenuButton);
gameScreen.setVisible(true);
}
}
Das Tic Tac Toe ist soweit in einer Separaten Klasse theGame programmiert.
Ich habe aber nun Mühe, die Verbindung zwischen dem Button und der Klasse wo das Spiel Ablaufen soll, hinzukriegen.
Dazu müsste man wissen, wie die andere Klasse aussieht. Ganz allgemein: Du brauchst eine Referenz auf eine Instanz der Klasse und dann verwendest Du die entsprechenden Methoden.
Dazu müsste man wissen, wie die andere Klasse aussieht. Ganz allgemein: Du brauchst eine Referenz auf eine Instanz der Klasse und dann verwendest Du die entsprechenden Methoden.
Die Klasse ist noch nicht fertig. Ich wollte im ersten Schritt die Einbindung der Klasse in das Hauptmenu machen, damit ich überhaupt sehen kann, was ich da auch Programmiere und welche Auswirkungen es hat.
Entsprechend habe ich lediglich die Klasse und ein paar Variablen deklariert.
Bedeutet das, dass ich beim Button eine neue Instanz mache für die Klasse TheGame. Ist das soweit korrekt?
Die Methoden werden nun in die Klasse TheGame geschrieben?
Java:
public class TheGame extends JPanel implements ActionListener {
private final int breite = 400;
private final int hoehe = 400;
//Es folgen weitere Variablen
//Konstruktor
public TheGame() {
initBoard();
}
public void initBoard() {
setBackground(Color.black);
setFocusable(true);
setPreferredSize(new Dimension(breite, hoehe));
initGame();
}
}
Code:
JFrame gameScreen;
JPanel menuButton;
JButton newGame;
public void erstelleFenster(MenuAuswahl menu) {
gameScreen = new JFrame();
gameScreen.setSize(300,300);
gameScreen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gameScreen.getContentPane();
gameScreen.setBackground(Color.black);
gameScreen.setLayout(null);
gameScreen.setResizable(false);
//Hauptmenu Panel
menuButton = new JPanel();
menuButton.setLayout(new GridLayout(1,1));
menuButton.setBounds(120,130,150,150);
newGame = new JButton("Spiel starten");
newGame.addActionListener(menu);
newGame.setActionCommand("start");
btnSpielBeenden.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
TheGame game = new TheGame();
}
});
menuButton.add(newGame);
gameScreen.add(newGame );
gameScreen.add(hauptmenuButton);
gameScreen.setVisible(true);
}
}
Ein klares Jein, man müsste wissen, was denn eigentlich passieren soll. Unabhängig davon: wieso erstellt der Beenden-Button ein neues Spiel?!?
Wenn Du z. B. ein Fenster mit einem Menü haben willst und beim Klick auf einen Button ein neues Fenster mit Deinem Spiel erzeugen willst, dann kannst Du tatsächlich eine neue Instanz erstellen:
Java:
JFrame frame = new JFrame("Spiel");
frame.add(new TheGame());
...
frame.setVisible(true);
Willst Du dagegen das Spiel im gleichen Fenster anzeigen, dann erzeugst Du TheGame nur einmal und sorgst dafür, dass das Spiel beim Klick auf "Neues Spiel" neu initialisiert wird.