Guido Krüger - JAVA 1.1 lernen - Kapitel 17

Previous Page Previous Page TOC TOC Index Next Page Previous Page



Fensterelemente

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 20 erläutert werden, soll der Umgang mit diesen Fensterlementen in den folgenden Unterabschnitten erklärt werden.

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();

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

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);

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 17.3 gezeigte und für Example1703 verwendete Icon eine Originalgröße von 60*56 Pixeln), im Falle des kleinen Icons sind die Ergebnisse jedoch nicht so befriedigend. Hier scheint die Skalierungsroutine lediglich ein schwarz-weißes Ergebnis zu erzeugen.

Undisplayed Graphic

Abbildung 17.3: Das Icon für Example1703

Hinweis

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.

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);

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 17.1 gibt eine Auswahl der verfügbaren Cursortypen an. Das freie Erstellen benutzerdefinierter Cursortypen wird derzeit in Java nicht unterstützt.
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 17.1: Konstanten zur Cursorauswahl

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)

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);

Beispiel

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 17.3 gezeigte Icon, das beim Minimieren des Programms und in der Taskleiste angezeigt wird.

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

public class Example1703
extends Frame
{
   public static void main(String[] args)
   {
      Example1703 wnd = new Example1703();
      wnd.setSize(300,200);
      wnd.setLocation(50,50);
      wnd.setVisible(true);
   }

   public Example1703() {
      super("");
      assignTitle();
      assignIcon();
      assignCursor();
      assignColors();
      assignFont();
      addWindowListener(
         new WindowAdapter() {
            public void windowClosing(WindowEvent event) {
               setVisible(false);
               dispose();
               System.exit(0);
            }
         }
      );
   }

   private void assignTitle()
   {
      setTitle("Beispiel 1703");
   }

   private void assignIcon()
   {
      Image img = getToolkit().getImage("icon1703.gif");
      MediaTracker mt = new MediaTracker(this);

      mt.addImage(img, 0);
      try {
         //Warten, bis das Image vollständig geladen ist,
         mt.waitForAll();
      } catch (InterruptedException e) {
         //nothing
      }
      setIconImage(img);
   }

   private void assignCursor()
   {
      setCursor(new Cursor(Cursor.WAIT_CURSOR));
   }

   private void assignColors()
   {
      setForeground(Color.white);
      setBackground(Color.black);
   }

   private void assignFont()
   {
      setFont(new Font("Serif",28,Font.PLAIN));
   }

   public void paint(Graphics g)
   {
      g.drawString("Test in Vordergrundfarbe",10,70);
   }

}

Die Programmausgabe ist wie folgt:

Undisplayed Graphic

Abbildung 17.4: Programm mit veränderten Fensterelementen


Previous Page Previous Page Page Top TOC Index Next Page Previous Page

(C) 1997 Guido Krueger, "Java 1.1 lernen", Addison-Wesley, Bonn, 1997