Weitere aktuelle Java-Titel finden Sie bei dpunkt.
 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index


8.9.1

Das Peer-Konzept des AWT



Die Peers schaffen eine einheitliche Schnittstelle, die von der zugrundeliegenden Oberfläche unabhängig ist. Peers sind in Java geschriebene Schnittstellen (Interfaces). Diese Schnittstellen stellen Methoden bereit, mit denen die Darstellung des AWT-Objekts am Bildschirm geändert werden kann. Für die Klasse Component und die meisten ihrer Unterklassen im AWT (beispielsweise Button) enthält das Paket awt.peer eine solche Peer-Schnittstelle.

Die Peers sind auf den einzelnen Betriebssystemen nativ unter Verwendung des systemspezifischen Oberflächen-Toolkits implementiert. Diese Implementierungen übernehmen die eigentliche Bildschirmdarstellung der java.awt-Komponenten.

Wenn nun eine weitere grafische Oberfläche unterstützt werden soll, ist es erforderlich, die Peer-Schnittstellen aller AWT-Komponenten unter Verwendung der betreffenden Plattform-API zu implementieren. Erst wenn alle Peers auf der betreffenden Plattform umgesetzt sind, können Java-Anwendungen, die von AWT-Objekten Gebrauch machen, auf der neu unterstützten Oberfläche laufen.

In Abbildung 8.68 ist das Drei-Schichten-Modell der AWT-Implementierung am Beispiel von Windows und X11 erläutert. Für beide Oberflächen sind die Peer-Schnittstellen implementiert, so dass ein AWT-Objekt auf beiden Plattformen dargestellt werden kann.

Abbildung 8.68: Schichtenmodell der AWT-Implementierung
Abbildung 8.68

Das AWT-Toolkit

Wenn ein Java-AWT-Objekt neu am Bildschirm dargestellt oder vom Bildschirm entfernt werden soll, muss seine addNotify()- bzw. removeNotify()-Methode aufgerufen werden.

Diese Methoden erzeugen oder entfernen ein Peer-Objekt, das dem Java-AWT-Objekt (Komponente) entspricht. Diese beiden Objekte sind sorgfältig zu unterscheiden. Das Peer-Objekt, das die Komponente anzeigt, existiert erst nach dem Aufruf von addNotify() und wird mit dem Aufruf von removeNotify() wieder entfernt. Die Lebenszeit der entsprechenden Komponente beginnt dagegen vor diesem Zeitraum und erstreckt sich über dessen Ende hinaus.

Die Erzeugung des Peer-Objekts erfolgt mit der entsprechenden create()-Methode der Klasse java.awt.Toolkit. Diese Klasse stellt zur Laufzeit die Verbindung zwischen der Komponente und ihrem Peer-Objekt her. Für einen Button beginnt diese Verbindung mit dem Aufruf:
   peer = Toolkit.createButton(this);
Hierdurch wird ein Peer-Objekt erzeugt, mit dem der Button am Bildschirm angezeigt werden kann. Mit diesem Objekt wird das Datenelement peer des Buttons initialisiert, damit er später noch auf sein Peer-Objekt zugreifen kann.

Abbildung 8.69: Ablauf der Erzeugung
Abbildung 8.69

Der gesamte Vorgang soll an einem Button erläutert werden, der in ein Fenster eingefügt wird. Zunächst wird ein Exemplar der Klasse Frame und ein Exemplar der Klasse Button erzeugt:

Frame f = new Frame();
Button b = new Button();
Ab der zweiten Anweisung beginnt die Lebenszeit des Objekts b. Jetzt soll der Button in das Fenster eingefügt werden:
   f.add(b);
Dieser Aufruf bewirkt Folgendes: Durch die Anweisung
   b.setVisible(true);
wird der Button angezeigt. Hierzu ruft b.setVisible() die entsprechende Methode des Peer-Objekts b.peer.setVisible() auf. Erst durch diesen Aufruf erfolgt die tatsächliche Anzeige am Bildschirm. Mit
   b.setVisible(false);
wird der Button unsichtbar gemacht. Auch hier wird die entsprechende Methode des Peer-Objekts ausgeführt, die den Button vom Bildschirm entfernt. Schließlich wird der Button mit folgender Anweisung aus dem Fenster entfernt:
   f.remove(b);
Dies hat analog zum Einfügen diese Auswirkungen: Zu einem späteren Zeitpunkt kann dann mit
  b=null;
das AWT-Objekt b freigegeben werden.


 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index

Copyright © 2002 dpunkt.Verlag, Heidelberg. Alle Rechte vorbehalten.