zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

getContentPane().setBackground( Color.blue )

Das vollständige Programm

Das folgende ist das vollständige Programm, zum Kopieren und Ausführen geignet.

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 aufforden 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 Sie repaint() nicht aufrufen, wird der Frame seine Farbe erst dann ändern, wenn Sie etwas tun, was gewöhnlich zu einem Neuzeichnen des Frames führt, wie z.B. den Frame bewegen oder seine Größe ändern.

FRAGE 15:

Was passiert, wenn Sie ein zweites Mal auf den Button klicken?