getContentPane().setBackground( Color.blue )
Das folgende ist das vollständige Programm, zum Kopieren und Ausführen geeignet.
import java.awt.*; import java.awt.event.*; import javax.swing.*; class ButtonFrame2 extends JFrame implements ActionListener { JButton bChange ; // Referenz auf ein Button Objekt // Konstruktor von ButtonFrame2 ButtonFrame2(String title) { super( title ); // den JFrame Konstruktor aufrufen setLayout( new FlowLayout() ); // den Layoutmanager setzen // construct a Button bChange = new JButton("Klick mich!"); // das ButtonFrame2-Objekt als Listener für den JButton registrieren bChange.addActionListener( this ); add( bChange ); // JFrame den Button hinzufügen setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); } public void actionPerformed( ActionEvent evt) { getContentPane().setBackground( Color.blue ); // den Hintergrund des Frames ändern repaint(); // das System auffordern den Bildschirm zu zeichnen. } } public class ButtonDemo2 { public static void main ( String[] args ) { ButtonFrame2 frm = new ButtonFrame2("Button Demo 2"); frm.setSize( 200, 100 ); frm.setVisible( true ); } }
Die repaint()
Methode,
die in actionPerformed()
aufgerufen wird,
teilt dem System mit den Bildschirm möglichst bald neu zu zeichnen,
da wir etwas geändert haben.
Das System wird dies tun, sobald es dafür bereit ist.
Wenn wir repaint()
nicht aufrufen,
wird der Frame seine Farbe erst dann ändern,
wenn wir etwas tun, was gewöhnlich zu einem Neuzeichnen
des Frames führt, wie z.B. den Frame bewegen oder seine Größe ändern.
Was passiert, wenn wir ein zweites Mal auf den Button klicken?