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


12.5.1

Fonts


Ein Font wird in Java durch die Klasse Font repräsentiert. Zur Initialisierung werden drei Informationen benötigt: Beim Erzeugen eines neuen Font-Objekts müssen dem Konstruktor alle drei Informationen übergeben werden:
  Font myFont = new Font("SansSerif", Font.BOLD, 20);
In obiger Zeile wird ein Font mit dem Namen SansSerif, mit fettem Stil und der Größe 20 erzeugt.

Einen Überblick über die einzelnen Font-Namen, die man bis einschließlich Version 1.1 verwenden kann, sind in Tabelle 12.1 aufgeführt. Die Tabelle erhebt jedoch keinen Anspruch auf Vollständigkeit, wie unten erläutert wird. Die in Klammern dargestellten Font-Namen wurden im JDK 1.0 eingeführt, sollten aber nicht mehr verwendet werden. Stattdessen wurden z. T. andere Namen eingeführt. Das liegt daran, dass z. B. »Helvetica« und »Times Roman« konkrete Fonts darstellen, die allerdings nicht auf jeder Plattform vorhanden sein müssen. Ist ein Font nicht verfügbar, so wird ein Ersatz-Font gewählt. Ein Ersatz-Font für »Times Roman« ist mit Sicherheit nicht mehr »Times Roman«, sondern ein anderer, ähnlicher Font. Deshalb werden Fonts nicht mehr direkt mit Namen, sondern mit ihren Eigenschaften benannt. Es existiert nun ein Font mit Serifen, ein Font ohne Serifen und ein Font mit Nicht-proportionalschrift. Über die konkreten Fonts, die sich hinter den Namen verbergen, wird nichts ausgesagt.

Tabelle 12.1: Die Java-Font-Namen im Einzelnen
WinNT/95MacOsSolarisIrixLinux
Monospaced (Courier)XXXXX
SansSerif (Helvetica)XXXXX
Serif (TimesRoman)XXXXX
DialogXXXXX
DialogInputXXXXX
Geneva X   
SymbolXXXXX
ZapfDingbats    X

Will man wissen, welche Font-Namen auf einem bestimmten System zur Verfügung stehen, kann man sie mit unten stehendem Programmauszug anzeigen lassen:

  PrintWriter out = new PrintWriter(System.out);
  String fonts[] = Toolkit.getDefaultToolkit().getFontList();
  for (int i=0; i< fonts.length; i++) 
    out.println(fonts[i]); 
Durch Aufruf von getFontList() der Klasse Toolkit erhält man ein Array mit den Namen der verfügbaren Fonts. Dies zeigt, dass die unterschiedlichen Fonts systemabhängig sind und theoretisch von System zu System variieren können. Daher ist es möglich, dass auf einem System nicht alle oben aufgeführten Fonts vorhanden sind oder eventuell zusätzliche Fonts zur Verfügung stehen. Dies ist davon abhängig, welche Fonts auf einem Rechner installiert sind.

Deren Umsetzung ist vom entsprechenden System abhängig. Der Java-Font-Name »Helvetica« wird z. B. unter X durch den X-Font »Adobe-Helvetica« und unter Windows durch den Windows-Font »Arial« umgesetzt.

Ab[1.2] dem JDK 1.2 sollte die Abfrage der verfügbaren Fonts nicht mehr mit getFontList(), sondern mit der Methode getAvailableFontFamilyNames() abgefragt werden. Diese Methode ist in der Klasse GraphicsEnvironment definiert. Folgender Codeausschnitt gibt alle Fontnamen beim JDK 1.2 auf der Standardausgabe aus:
  PrintWriter out = new PrintWriter(System.out);
  GraphicsEnvironment g;
  g = GraphicsEnvironment.getLocalGraphicsEnvironment();
  String[] fonts[] g.getAvailableFontFamilyNames();
  for (int i=0; i< fonts.length; i++) 
    out.println(fonts[i]);   
Diese Änderung ist erforderlich, weil seit dem JDK 1.2 Fonts nicht mehr durch ihren logischen Namen repräsentiert werden, sondern durch die Kombination aus Font-Familie und Font-Stil.

Für die Angabe des Stils stehen in der Klasse Font drei Konstanten zu Verfügung:

Tabelle 12.2: Die verschiedenen Stilarten in Java
StilBedeutung
Font.PLAINNormal
Font.BOLDFett
Font.ITALICKursiv

Die einzelnen Stilarten können auch kombiniert angegeben werden. Hierfür wird dem Konstruktor der Klasse Font eine bitweise ODER-Verknüpfung der Konstanten aus Tabelle 12.2 übergeben:

  new Font("SansSerif", Font.BOLD | Font.ITALIC, 20);
Über ein Font-Exemplar kann man z. B. in einer Komponente die Schriftart wechseln. Das geschieht durch Aufruf der Methode setFont() der Komponente. setFont() erhält das neue Font-Objekt als Argument:
  TextArea text = new TextArea(20, 50);
  text.setFont(new Font("Monospaced", Font.PLAIN, 12));
Im obigen Beispiel wird der Font einer TextArea geändert. Durch Aufruf der Methode getFont() erhält man ein Font-Objekt zurück, das den aktuellen Font einer Komponente repräsentiert.


 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.