Swing Interaktive Flächen auf der GUI anzeigen lassen

Executer

Mitglied
Hey,
Ich möchte ein Mastermind Spiel in Java schreiben, habe allerdings noch keine Idee wie ich das visualisieren kann. Ich habe mich mal umgeguckt und bin auf ein Video gestoßen, wessen Idee mich sehr anspricht. In Minute 6:55 ca. kann man solch interaktive Flächen sehen, welche die Farbe bei Druck wechseln, genau das brauche ich auch, wie geht denn sowas ?
 
Ich habe dir ein Beispiel-Programm geschrieben:
Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Programm implements ActionListener {

    private JButton btn;
    private JFrame hauptfenster;

    public Programm() {

        hauptfenster = new JFrame();

        hauptfenster.setTitle("Uebung");

        JPanel obererBereich = new JPanel();

        hauptfenster.setLayout(new BorderLayout());
        hauptfenster.getContentPane().add(obererBereich, BorderLayout.NORTH);

        btn = new JButton("Klick");
        btn.setBackground(Color.RED);
        btn.addActionListener(this);
        btn.setActionCommand("Button Nr. 1");
        btn.setPreferredSize(new Dimension(100, 100));
        obererBereich.add(btn);

        hauptfenster.setPreferredSize(new Dimension(600, 400));

        hauptfenster.pack();
        hauptfenster.setVisible(true);

    }

    @Override
    public void actionPerformed(ActionEvent e) {

        if (e.getActionCommand().equals(("Button Nr. 1"))) {

            if (btn.getBackground() == Color.RED) {
                btn.setBackground(Color.YELLOW);
            } else if (btn.getBackground() == Color.YELLOW) {
                btn.setBackground(Color.GREEN);
            } else if (btn.getBackground() == Color.GREEN) {
                btn.setBackground(Color.BLUE);
            } else if (btn.getBackground() == Color.BLUE) {
                btn.setBackground(Color.RED);
            }

        }

    }

    public static void main(String[] args) {
        new Programm();
    }

}

Das Programm hat einen Makel. Wenn das Fenster geschlossen wird wird das Programm nicht komplett beendet. Die folgende Zeile würde nicht funktionieren aber ich weiß nicht warum:
Java:
hauptfenster.setDefaultCloseOperation(EXIT_ON_CLOSE);
 
Zuletzt bearbeitet:
Danke! Das funktioniert!
Ich habe die Zeile direkt unter der folgenden Zeile eingefügt:
Java:
hauptfenster.setVisible(true);
 

Zurück
Oben