From d1fcac31ca14509a8ee2e405b9c63c2a2eed396b Mon Sep 17 00:00:00 2001 From: Leon <3010261@stud.hs-mannheim.de> Date: Fri, 27 Dec 2024 15:02:48 +0100 Subject: [PATCH] =?UTF-8?q?GUI=20erm=C3=B6glicht=20nun=20Start=20und=20Zei?= =?UTF-8?q?tmessung.=20Noch=20keine=20Idee=20f=C3=BCr=20korrekte=20Impleme?= =?UTF-8?q?ntierung=20der=20Spielfeld=20auswahl?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/de/deversmann/gui/Spielfeld.java | 4 - .../java/de/deversmann/gui/SpielfeldGUI.java | 97 +++++++++++++++++++ 2 files changed, 97 insertions(+), 4 deletions(-) delete mode 100644 src/main/java/de/deversmann/gui/Spielfeld.java create mode 100644 src/main/java/de/deversmann/gui/SpielfeldGUI.java diff --git a/src/main/java/de/deversmann/gui/Spielfeld.java b/src/main/java/de/deversmann/gui/Spielfeld.java deleted file mode 100644 index 87f2f19..0000000 --- a/src/main/java/de/deversmann/gui/Spielfeld.java +++ /dev/null @@ -1,4 +0,0 @@ -package de.deversmann.gui; - -public class Spielfeld { -} diff --git a/src/main/java/de/deversmann/gui/SpielfeldGUI.java b/src/main/java/de/deversmann/gui/SpielfeldGUI.java new file mode 100644 index 0000000..1bea0b3 --- /dev/null +++ b/src/main/java/de/deversmann/gui/SpielfeldGUI.java @@ -0,0 +1,97 @@ +package de.deversmann.gui; + +import de.deversmann.domain.Spielfeld; +import de.deversmann.domain.Zeiterfassung; + +import javax.swing.*; +import java.awt.*; + +public class SpielfeldGUI { + + private JFrame frame; + private JPanel spielfeldPanel; + private JLabel timerLabel; + private Timer guiTimer; + private Spielfeld spielfeld; + private Zeiterfassung timer; + + public SpielfeldGUI() { + // Initialisiere Domain-Klassen + spielfeld = new Spielfeld(); + timer = new Zeiterfassung(); + + // Erstelle das Hauptfenster + frame = new JFrame("Hitori Spielfeld"); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setSize(800, 600); + frame.setLayout(new BorderLayout()); + + // Timer-Anzeige + timerLabel = new JLabel("00:00:00.000"); + timerLabel.setFont(new Font("Monospaced", Font.BOLD, 16)); + frame.add(timerLabel, BorderLayout.NORTH); + + // Spielfeld-Panel + spielfeldPanel = new JPanel(); + frame.add(spielfeldPanel, BorderLayout.CENTER); + + // Button-Panel + JPanel buttonPanel = new JPanel(); + JButton selectButton = new JButton("Spielfeld auswählen"); + JButton startButton = new JButton("Timer starten"); + JButton stopButton = new JButton("Timer stoppen"); + + buttonPanel.add(selectButton); + buttonPanel.add(startButton); + buttonPanel.add(stopButton); + frame.add(buttonPanel, BorderLayout.SOUTH); + + // Aktionen für Buttons + selectButton.addActionListener(e -> ladeSpielfeldMitAuswahl()); + startButton.addActionListener(e -> starteTimer()); + stopButton.addActionListener(e -> stoppeTimer()); + + // Timer für GUI-Updates + guiTimer = new Timer(100, e -> timerLabel.setText(timer.getFormattedTime())); + + // Fenster sichtbar machen + frame.setVisible(true); + } + + private void starteTimer() { + timer.start(); + guiTimer.start(); + } + + private void stoppeTimer() { + timer.stop(); + guiTimer.stop(); + } + + private void ladeSpielfeldMitAuswahl() { + + } + + private void zeigeSpielfeld() { + + } + + private void feldAktion(int x, int y, JButton button) { + String aktuellerZustand = spielfeld.getZustand(x, y); + String neuerZustand = switch (aktuellerZustand) { + case "grau" -> "schwarz"; + case "schwarz" -> "weiß"; + default -> "grau"; + }; + spielfeld.setzeZustand(x, y, neuerZustand); + button.setBackground(switch (neuerZustand) { + case "schwarz" -> Color.BLACK; + case "weiß" -> Color.WHITE; + default -> Color.GRAY; + }); + } + + public static void main(String[] args) { + SwingUtilities.invokeLater(SpielfeldGUI::new); + } +}