Konrad-Adenauer-Gymnasium Langenfeld

Informatik Grundkurs Einführungsphase

Aufbau der Applet-Oberfläche

Warum können wir diese Aufgabe nicht auch komplett mit dem Design-Editor lösen?

Natürlich geht das. Allerdings zeigt sich der JavaEditor durch die Verwendung des Panels cp ein wenig störrisch.

Erzeugen Sie daher zunächst einmal ein neues Applet (Button3a). Dann erzeugen Sie im Design-Editor eine Button, der zunächst button1 heißt. Geben Sie dann dem Attribut Label den Wert "Drück mich" und dem Attribut Name den Wert "pressMe".

import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;

/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 11.08.2006
  * @author
  */

public class Button3a extends Applet {
  // Anfang Variablen
  private Button pressMe = new Button();
  // Ende Variablen

  public void init() {
    Panel cp = new Panel(null);
    cp.setBounds(0, 0, 300, 300);
    add(cp);
    // Anfang Komponenten

    pressMe.setBounds(120, 96, 75, 25);
    pressMe.setLabel("Drück mich");
    cp.add(pressMe);
    pressMe.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        pressMeActionPerformed(evt);
      }
    });

    // Ende Komponenten

  }
  // Anfang Ereignisprozeduren
  public void pressMeActionPerformed(ActionEvent evt) {

  }

  // Ende Ereignisprozeduren

}

Gegenüber unser Lösung ist das Interface ActionListener nicht über implements hinzugefügt worden, sondern nur als Aufruf mittles new bei addActionListener. Darin wird dann auch eine Methode pressMeActionPerformed definiert, die unsere Methode actionPerformed ersetzt. Dadurch spart man sich die Verzweigung des Objekts. 

Das ist der eine Nachteil gegenüber der 1. Lösung, denn Sie sollten an dieser Stelle Verzweigungen kennenlernen!

Jetzt können wir allerdings nicht mehr die Hintergrundfarbe des Applets setzen, denn es wird vom Panel cp verdeckt. Daher ändern Sie die Farbe des Panels cp, in dem Sie in der init()-Methode die Zeile

cp.setBackground(Color.black);

vor den Kommentar //Anfang Komponenten setzen.

Nun kommt man schnell auf die Idee, dass man in der Methode pressMeActionPerformed dann die Zeile

cp.setBackground(Color.yellow);

einsetzt. Allerdings kommt es zu einem Kompilierungsfehler.

Denn das Panel-Objekt cp ist innerhalb der Methode init() definiert. Daher ist der Gültigkeitsbereich auch nur innerhalb der Methode. Nun wollen wir aber auf eine Eigenschaft zugreifen aus einer anderen Methode. Und das geht nicht.

Also muss man die Zeile

Panel cp = new Panel(null);

aus der Methode init() hoch hinter die Definitionszeile des Buttons schieben.

Damit das Objekt nur innerhalb des Applets zugreifbar ist, definieren wir es am besten private:

private Panel cp = new Panel(null);

Nun klappt es auch.


© Ralph-Erich Hildebrandt, 11. August 2006