next up previous contents
Nächste Seite: Innere anonyme Klassen verwenden Aufwärts: Events Vorherige Seite: Fenster schließen   Inhalt

Interaktion mit Hilfe von Buttons

Im folgenden Beispiel führt das Drücken bestimmter Schaltflächen zur entsprechenden Textausgabe.

import java.awt.*;
import java.awt.event.*;

public class PressTheButton extends Frame implements ActionListener {

    String farbe = "white";
    Button redButton;
    Button whiteButton;
    Button blueButton;

    public PressTheButton(String titel) {
        super(titel);
        setLayout(new FlowLayout());
        redButton   = new Button("rot");
        whiteButton = new Button("weiß");
        blueButton  = new Button("blau");
        add(redButton);
        add(whiteButton);
        add(blueButton);
        redButton.addActionListener(this);
        whiteButton.addActionListener(this);
        blueButton.addActionListener(this);
    }

    class FensterEreignis extends WindowAdapter {
        public void windowClosing(WindowEvent we) {
            System.out.println("... und aus ;-)");
            System.exit(0);
        }
    }

    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == redButton) farbe="red";
        if (e.getSource() == whiteButton) farbe="white";
        if (e.getSource() == blueButton) farbe="blue";
        repaint();
    }

    public void paint (Graphics bs) {
        if (farbe == "white") bs.setColor(Color.white);
        if (farbe == "red") bs.setColor(Color.red);
        if (farbe == "blue") bs.setColor(Color.blue);
        bs.fillRect(10,60,180,30);
    }

    public static void main (String [] args) {
        PressTheButton evapp = new PressTheButton("Schaltflächen!");
        evapp.addWindowListener(new FensterEreignis());
        evapp.setLocation(100,100);
        evapp.setSize(200,100);
        evapp.show();
    }
}

Die obige Klasse PressTheButton implementiert die Schnittstelle ActionListener, indem die Methode actionPerformed entsprechend der Funkionalität der großartigen Anwendung codiert wird. Ferner wird die Methode paint() überschrieben, die für alle Grafikausgaben auf einem Fenster zuständig ist, und die Methode repaint() verwendet, die das neuerliche Zeichnen des Grafikschirmes bewirkt. Beide Methoden werden im nächsten Abschnitt ``Grafik'' ausführlich besprochen.


\includegraphics[width=3.5cm]{PressTheButton.ps}



Alfred Nussbaumer 2003-02-10