GUI ermöglicht nun Start und Zeitmessung. Noch keine Idee für korrekte Implementierung der Spielfeld auswahl
parent
bb8a2ad265
commit
d1fcac31ca
|
@ -1,4 +0,0 @@
|
||||||
package de.deversmann.gui;
|
|
||||||
|
|
||||||
public class Spielfeld {
|
|
||||||
}
|
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue