Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 3. Auflage
<< | < | > | >> | API | Kapitel 27 - Fenster

## 27.5 Fensterelemente

- 27.5 Fensterelemente
  - 27.5.1 Der Fenstertitel
  - 27.5.2 Das Icon des Fensters
  - 27.5.3 Der Mauscursor
  - 27.5.4 Die Vorder- und Hintergrundfarbe
  - 27.5.5 Der Standard-Font

Neben den visuellen Eigenschaften eines Fensters gibt es noch eine Reihe weiterer Elemente, die einem Fenster zugeordnet werden können. Hierzu zählen die Titelleiste, das Menü, ein Icon, ein Mauscursor, eine bestimmte Vorder- und Hintergrundfarbe und ein Standard-Font zur Ausgabe von Schriften. Bis auf die Definition und die Zuordnung von Menüs, die in Kapitel 30 erläutert werden, soll der Umgang mit diesen Fensterelementen in den folgenden Unterabschnitten erklärt werden.

### 27.5.1 Der Fenstertitel

Die Titelleiste eines Fensters läßt sich in den Klassen `Frame` und `Dialog` mit Hilfe der Methode `setTitle` verändern:

    public void setTitle(String title)

    public String getTitle()
| java.awt.Frame

Ein Aufruf dieser Methode ändert die Beschriftung der Titelleiste in den als `String` übergebenen Parameter `title`. Mit der Methode `getTitle` kann die Titelleiste abgefragt werden.

### 27.5.2 Das Icon des Fensters

Wenn ein Fenster unter Windows minimiert wird, zeigt es ein Icon an. Mit einem Doppelklick auf das Icon kann die ursprüngliche Größe des Fensters wiederhergestellt werden. Mit Hilfe der Methode `setIconImage` der Klasse `Frame` kann dem Fenster ein Icon zugeordnet werden, das beim Minimieren angezeigt wird:

    public void setIconImage(Image image)
| java.awt.Frame

Beim Design des Icons steht man nun vor dem Konflikt, entscheiden zu müssen, in welcher Größe das Icon entworfen werden soll. Ein Windows-Programm hat meist ein Haupticon in der Größe 32*32 Pixel und ein kleineres Icon mit 16*16 Pixeln. Beide werden an unterschiedlichen Stellen im Programm benötigt. Das JDK ist glücklicherweise in der Lage, die übergebenen Images so zu skalieren, daß sie die jeweils benötigte Größe annehmen. Die Ergebnisse sind im Falle des großen Icons durchaus brauchbar (so hat z.B. das in Abbildung 27.3 gezeigte und in Listing 27.4 verwendete Icon eine Originalgröße von 60*56 Pixeln), im Falle des kleinen Icons sind die Ergebnisse in Prä-1.2-JDKs jedoch nicht so befriedigend. Hier scheint die Skalierungsroutine lediglich ein schwarz-weißes Ergebnis zu erzeugen.

Abbildung 27.3: Das Beispiel-Icon

|  | Leider unterstützen nicht alle Plattformen, auf denen Java läuft, die Darstellung eines Icons als Symbol für ein minimiertes Fenster. Daher kann `setIconImage` nicht als vollständig portabel angesehen werden. |  |
Hinweis

### 27.5.3 Der Mauscursor

Zur Darstellung des Mauscursors bietet die Klasse `Component` eine Methode `setCursor`, mit der ein `Cursor`-Objekt vorgegeben werden kann:

    public void setCursor(Cursor cursor)
| java.awt.Component

Die Klasse `Cursor` besitzt einen Konstruktor, der als einziges Argument eine ganzzahlige Konstante erwartet, mit der der gewünschte Cursor aus der Liste der vordefinierten Cursortypen ausgewählt werden kann. Tabelle 27.1 gibt eine Auswahl der verfügbaren Cursortypen an.

|  |  |  | Das freie Erstellen benutzerdefinierter Cursortypen wird seit dem JDK 1.2 unterstützt. Dazu gibt es in der Klasse `Toolkit` die Methoden `createCustomCursor`, `getBestCursorSize` und `getMaximumCursorColors`. Wir wollen darauf nicht näher eingehen. |  |
JDK1.1-1.4

Konstante aus Frame | Cursorform
`Cursor.CROSSHAIR_CURSOR` | Fadenkreuz
`Cursor.DEFAULT_CURSOR` | Standardpfeil
`Cursor.MOVE_CURSOR` | Vierfachpfeil
`Cursor.TEXT_CURSOR` | Senkrechter Strich
`Cursor.WAIT_CURSOR` | Eieruhr

Tabelle 27.1: Konstanten zur Cursorauswahl

### 27.5.4 Die Vorder- und Hintergrundfarbe

Die Hintergrundfarbe eines Fensters wird vor dem Aufruf von `paint` verwendet, um den Hintergrund des Fensters zu löschen. Das Löschen kann man sich so vorstellen, daß ein gefülltes Rechteck in der Größe der Client-Area in der aktuellen Hintergrundfarbe gezeichnet wird. Die Vordergrundfarbe dient zur Ausgabe von Grafik- und Textobjekten, wenn im Grafik-Kontext keine andere Farbe gesetzt wird. Wird die Einstellung nicht geändert, werden in beiden Fällen die unter Windows eingestellten Standardfarben verwendet. Mit Hilfe der Methoden `setForeground` und `setBackground` der Klasse `Component` können Vorder- und Hintergrundfarbe eines Fensters geändert werden:

    public void setBackground(Color c)

    public void setForeground(Color c)
| java.awt.Component

### 27.5.5 Der Standard-Font

Ein Fenster hat einen Standard-Font, der zur Ausgabe von Schrift verwendet wird, wenn nicht im Grafik-Kontext ein anderer Font ausgewählt wird. Die Verwendung eines Standard-Fonts macht Sinn, wenn nur ein Font verwendet werden soll, um Text darzustellen. Dadurch ergeben sich Laufzeitvorteile gegenüber der separaten Auswahl eines Fonts bei jedem Aufruf von `paint`. Der Standard-Font eines Fensters wird mit der Methode `setFont` der Klasse `Component` eingestellt:

    public void setFont(Font f)
| java.awt.Component

Das folgende Beispielprogramm erzeugt ein Fenster mit einer Titelleiste, gesetzter Vorder- und Hintergrundfarbe und der Eieruhr als Cursor. Zusätzlich besitzt das Programm das in Abbildung 27.3 gezeigte Icon, das beim Minimieren des Programms und in der Taskleiste angezeigt wird.

    001 /* Listing2704.java */
    002
    003 import java.awt.*;
    004 import java.awt.event.*;
    005
    006 public class Listing2704
    007 extends Frame
    008 {
    009   public static void main(String[] args)
    010   {
    011     Listing2704 wnd = new Listing2704();
    012     wnd.setSize(300,200);
    013     wnd.setLocation(50,50);
    014     wnd.setVisible(true);
    015   }
    016
    017   public Listing2704()
    018   {
    019     super("");
    020     assignTitle();
    021     assignIcon();
    022     assignCursor();
    023     assignColors();
    024     assignFont();
    025     addWindowListener(new WindowClosingAdapter(true));
    026   }
    027
    028   private void assignTitle()
    029   {
    030     setTitle("Veränderte Fensterelemente");
    031   }
    032
    033   private void assignIcon()
    034   {
    035     Image img = getToolkit().getImage("testicon.gif");
    036     MediaTracker mt = new MediaTracker(this);
    037
    038     mt.addImage(img, 0);
    039     try {
    040       //Warten, bis das Image vollständig geladen ist,
    041       mt.waitForAll();
    042     } catch (InterruptedException e) {
    043       //nothing
    044     }
    045     setIconImage(img);
    046   }
    047
    048   private void assignCursor()
    049   {
    050     setCursor(new Cursor(Cursor.WAIT_CURSOR));
    051   }
    052
    053   private void assignColors()
    054   {
    055     setForeground(Color.white);
    056     setBackground(Color.black);
    057   }
    058
    059   private void assignFont()
    060   {
    061     setFont(new Font("Serif", Font.PLAIN, 28));
    062   }
    063
    064   public void paint(Graphics g)
    065   {
    066     g.drawString("Test in Vordergrundfarbe",10,70);
    067   }
    068 }
| Listing2704.java

Listing 27.4: Ein Programm mit veränderten Fensterelementen

Die Programmausgabe ist wie folgt:

Abbildung 27.4: Ein Programm mit veränderten Fensterelementen

|  | In vielen Beispielen in diesem Buch wird der Einfachheit halber die in Abschnitt 23.2.4 vorgestellte Klasse `WindowClosingAdapter` verwendet, um einen Listener zum Schließen des Fensters zu registrieren. Damit ein solches Beispiel sich kompilieren läßt, muß die Datei WindowClosingAdapter.java im aktuellen Verzeichnis vorhanden sein. Sie befindet sich auf der CD-ROM zum Buch oder in Listing 23.2. |  |
Hinweis

Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 3. Auflage, Addison Wesley, Version 3.0
<< | < | > | >> | API | © 1998-2002 Guido Krüger, http://www.javabuch.de