diff --git a/Hitori/src/main/java/PR2/HitoriSpiel/GUI/GameBoard.java b/Hitori/src/main/java/PR2/HitoriSpiel/GUI/GameBoard.java index 7d845d6..ce5bbe9 100644 --- a/Hitori/src/main/java/PR2/HitoriSpiel/GUI/GameBoard.java +++ b/Hitori/src/main/java/PR2/HitoriSpiel/GUI/GameBoard.java @@ -64,14 +64,14 @@ public class GameBoard extends JPanel { private JPanel createControlPanel() { JPanel controlPanel = new JPanel(); - JButton resetButton = createButton("Zurücksetzen", 200, 30); + JButton resetButton = createButton("Zurücksetzen", 150, 30); resetButton.addActionListener(e -> { saveStateForUndo(); resetBoard(); refreshBoard(); }); - JButton undoButton = createButton("Undo", 200, 30); + JButton undoButton = createButton("Undo", 80, 30); undoButton.addActionListener(e -> { int[][] previousState = stateManager.undo(board.getNumbers()); if (previousState != null) { @@ -82,7 +82,7 @@ public class GameBoard extends JPanel { } }); - JButton redoButton = createButton("Redo", 200, 30); + JButton redoButton = createButton("Redo", 80, 30); redoButton.addActionListener(e -> { int[][] nextState = stateManager.redo(board.getNumbers()); if (nextState != null) { @@ -93,7 +93,7 @@ public class GameBoard extends JPanel { } }); - JButton validateButton = createButton("Validieren", 200, 30); + JButton validateButton = createButton("Validieren", 100, 30); validateButton.addActionListener(e -> { if (validateCurrentBoard()) { stopTimer(); @@ -103,7 +103,7 @@ public class GameBoard extends JPanel { } }); - JButton pauseButton = createButton("Pause", 200, 30); + JButton pauseButton = createButton("Pause", 100, 30); pauseButton.addActionListener(e -> { stopTimer(); showPauseMenu(); @@ -120,28 +120,31 @@ public class GameBoard extends JPanel { } public void resetBoard() { - // Spielfeldlogik zurücksetzen - //stopTimer(); - //startTimer(); // Timer neu starten + // Spiellogik zurücksetzen board.resetBoard(); - removeAll(); - add(timerLabel, BorderLayout.NORTH); - JPanel gamePanel = new JPanel(new GridLayout(board.getSize(), board.getSize())); - for (int i = 0; i < board.getSize(); i++) { - for (int j = 0; j < board.getSize(); j++) { - HitoriCell cell = board.getCell(i, j); - JButton button = createCellButton(cell, i, j); - gamePanel.add(button); + // Spielfeld (CENTER) entfernen und neu erstellen + if (getLayout() instanceof BorderLayout) { + BorderLayout layout = (BorderLayout) getLayout(); + + // Komponente im CENTER entfernen + Component centerComponent = layout.getLayoutComponent(BorderLayout.CENTER); + if (centerComponent != null) { + remove(centerComponent); } + + // Neues Spielfeld hinzufügen + add(createGamePanel(), BorderLayout.CENTER); + + // Kontroll-Buttons (SOUTH) entfernen und neu hinzufügen + Component southComponent = layout.getLayoutComponent(BorderLayout.SOUTH); + if (southComponent != null) { + remove(southComponent); + } + add(createControlPanel(), BorderLayout.SOUTH); } - add(gamePanel, BorderLayout.CENTER); - // Kontroll-Buttons unten behalten - JPanel controlPanel = createControlPanel(); - add(controlPanel, BorderLayout.SOUTH); - - // Oberfläche neu laden + // Oberfläche aktualisieren revalidate(); repaint(); } @@ -241,19 +244,8 @@ public class GameBoard extends JPanel { } private void refreshBoard() { - removeAll(); - JPanel gamePanel = new JPanel(new GridLayout(board.getSize(), board.getSize())); - for (int i = 0; i < board.getSize(); i++) { - for (int j = 0; j < board.getSize(); j++) { - HitoriCell cell = board.getCell(i, j); - JButton button = createCellButton(cell, i, j); - gamePanel.add(button); - } - } - add(gamePanel, BorderLayout.CENTER); - - JPanel controlPanel = createControlPanel(); - add(controlPanel, BorderLayout.SOUTH); + remove(1); // Entferne das aktuelle Spielfeld im CENTER + add(createGamePanel(), BorderLayout.CENTER); // Füge das neue Spielfeld hinzu revalidate(); repaint(); @@ -263,4 +255,17 @@ public class GameBoard extends JPanel { stateManager.saveState(board.getNumbers()); } + private JPanel createGamePanel() { + JPanel gamePanel = new JPanel(new GridLayout(board.getSize(), board.getSize())); + for (int i = 0; i < board.getSize(); i++) { + for (int j = 0; j < board.getSize(); j++) { + HitoriCell cell = board.getCell(i, j); + JButton button = createCellButton(cell, i, j); + gamePanel.add(button); + } + } + System.out.println("Spielpanel erstellt mit " + (board.getSize() * board.getSize()) + " Buttons."); + return gamePanel; + } + }