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