From 71397410183a235bbe08f56f53038597254e2ff8 Mon Sep 17 00:00:00 2001 From: Vickvick2002 Date: Sat, 4 Jan 2025 14:16:41 +0100 Subject: [PATCH] =?UTF-8?q?Fehler=20beim=20Laden=20des=20Hauptmen=C3=BCs?= =?UTF-8?q?=20behoben?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Domain/HitoriSolutionLoader.java | 1 + .../java/PR2/HitoriSpiel/GUI/GameBoard.java | 17 +++++--- .../java/PR2/HitoriSpiel/GUI/StartMenu.java | 41 +++++++++---------- .../main/java/PR2/HitoriSpiel/Main/Main.java | 15 +++---- 4 files changed, 40 insertions(+), 34 deletions(-) diff --git a/Hitori/src/main/java/PR2/HitoriSpiel/Domain/HitoriSolutionLoader.java b/Hitori/src/main/java/PR2/HitoriSpiel/Domain/HitoriSolutionLoader.java index bea455f..d18cf81 100644 --- a/Hitori/src/main/java/PR2/HitoriSpiel/Domain/HitoriSolutionLoader.java +++ b/Hitori/src/main/java/PR2/HitoriSpiel/Domain/HitoriSolutionLoader.java @@ -33,5 +33,6 @@ public class HitoriSolutionLoader { } return solutionCoordinates; + } } \ No newline at end of file diff --git a/Hitori/src/main/java/PR2/HitoriSpiel/GUI/GameBoard.java b/Hitori/src/main/java/PR2/HitoriSpiel/GUI/GameBoard.java index ce5bbe9..522da57 100644 --- a/Hitori/src/main/java/PR2/HitoriSpiel/GUI/GameBoard.java +++ b/Hitori/src/main/java/PR2/HitoriSpiel/GUI/GameBoard.java @@ -227,14 +227,19 @@ public class GameBoard extends JPanel { } private void returnToMainMenu() { - // Eltern-Frame abrufen + /// Eltern-Frame abrufen JFrame parentFrame = (JFrame) SwingUtilities.getWindowAncestor(this); - // Inhalt des Frames auf das Hauptmenü setzen - parentFrame.getContentPane().removeAll(); - parentFrame.add(new StartMenu()); - parentFrame.revalidate(); - parentFrame.repaint(); + if (parentFrame != null) { + // Hauptmenü erstellen und im Frame setzen + StartMenu startMenu = new StartMenu(parentFrame); + parentFrame.getContentPane().removeAll(); // Entferne alle aktuellen Inhalte + parentFrame.add(startMenu); // Füge das Hauptmenü hinzu + parentFrame.revalidate(); // Layout aktualisieren + parentFrame.repaint(); // Oberfläche neu zeichnen + } else { + System.err.println("Fehler: Kein übergeordnetes JFrame gefunden."); + } } private JButton createButton(String text, int width, int height) { diff --git a/Hitori/src/main/java/PR2/HitoriSpiel/GUI/StartMenu.java b/Hitori/src/main/java/PR2/HitoriSpiel/GUI/StartMenu.java index 621eca0..57690f9 100644 --- a/Hitori/src/main/java/PR2/HitoriSpiel/GUI/StartMenu.java +++ b/Hitori/src/main/java/PR2/HitoriSpiel/GUI/StartMenu.java @@ -13,15 +13,14 @@ import java.util.Random; import static PR2.HitoriSpiel.GUI.BoardLoader.loadBoard; -public class StartMenu extends JFrame { - private JPanel mainPanel; +public class StartMenu extends JPanel { + private final JFrame parentFrame; - public StartMenu() { - setTitle("Hitori - Hauptmenü"); - setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - setSize(800, 600); + public StartMenu(JFrame parentFrame) { + this.parentFrame = parentFrame; + setLayout(new GridBagLayout()); - mainPanel = new JPanel(new GridBagLayout()); + //mainPanel = new JPanel(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); gbc.gridx = 0; gbc.gridy = GridBagConstraints.RELATIVE; @@ -31,7 +30,7 @@ public class StartMenu extends JFrame { JLabel titleLabel = new JLabel("Willkommen im Hitori-Spiel!"); titleLabel.setFont(new Font("Arial", Font.BOLD, 16)); titleLabel.setHorizontalAlignment(SwingConstants.CENTER); - mainPanel.add(titleLabel, gbc); + add(titleLabel, gbc); // Buttons erstellen @@ -42,11 +41,11 @@ public class StartMenu extends JFrame { JButton exitButton = createButton("Spiel beenden", 200, 30); - mainPanel.add(continueButton, gbc); - mainPanel.add(selectBoardButton, gbc); - mainPanel.add(randomBoardButton, gbc); - mainPanel.add(highscorelistButton, gbc); - mainPanel.add(exitButton, gbc); + add(continueButton, gbc); + add(selectBoardButton, gbc); + add(randomBoardButton, gbc); + add(highscorelistButton, gbc); + add(exitButton, gbc); continueButton.addActionListener(e -> continueGame()); selectBoardButton.addActionListener(e -> selectBoard()); @@ -54,9 +53,6 @@ public class StartMenu extends JFrame { highscorelistButton.addActionListener(e -> highscorelist()); exitButton.addActionListener(e -> System.exit(0)); - add(mainPanel); - setVisible(true); - setLocationRelativeTo(null); } private void continueGame() { @@ -125,11 +121,11 @@ public class StartMenu extends JFrame { } private void loadGameBoard(GameBoard gameBoard, List solutionCoordinates) { - mainPanel.removeAll(); - mainPanel.setLayout(new BorderLayout()); - mainPanel.add(gameBoard, BorderLayout.CENTER); - mainPanel.revalidate(); - mainPanel.repaint(); + removeAll(); + setLayout(new BorderLayout()); + add(gameBoard, BorderLayout.CENTER); + revalidate(); + repaint(); } private void loadAndDisplayBoard(String selectedFile) { @@ -154,4 +150,7 @@ public class StartMenu extends JFrame { } + + + } diff --git a/Hitori/src/main/java/PR2/HitoriSpiel/Main/Main.java b/Hitori/src/main/java/PR2/HitoriSpiel/Main/Main.java index 67314a9..69681b0 100644 --- a/Hitori/src/main/java/PR2/HitoriSpiel/Main/Main.java +++ b/Hitori/src/main/java/PR2/HitoriSpiel/Main/Main.java @@ -12,14 +12,15 @@ import javax.swing.*; public class Main { public static void main(String[] args) { - SwingUtilities.invokeLater(() -> { - try { - new StartMenu(); - } catch (Exception e) { - e.printStackTrace(); - JOptionPane.showMessageDialog(null, "Ein schwerer Fehler ist aufgetreten: " + e.getMessage(), "Fehler", JOptionPane.ERROR_MESSAGE); - } + JFrame frame = new JFrame("Hitori - Hauptmenü"); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setSize(800, 600); + frame.setLocationRelativeTo(null); + + StartMenu startMenu = new StartMenu(frame); + frame.add(startMenu); + frame.setVisible(true); }); } } \ No newline at end of file