Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 7. Auflage |
<< | < | > | >> | API | Kapitel 25 - Textausgabe |
Führt man die Schriftausgabe wie bisher besprochen durch, werden die Texte in einem systemabhängigen Standard-Font ausgegeben. Soll ein anderer Font zur Textausgabe verwendet werden, so muss zunächst ein passendes Objekt der Klasse Font erzeugt und dem verwendeten Graphics-Objekt zugewiesen werden:
public void setFont(Font font) public Font getFont() |
java.awt.Graphics |
Die Methode setFont wird dazu verwendet, das Font-Objekt font in den Grafikkontext einzutragen, und mit getFont kann der aktuelle Font abgefragt werden.
Das Erzeugen neuer Font-Objekte wird über die drei Parameter name, style und size des Konstruktors der Klasse Font gesteuert:
public Font(String name, int style, int size) |
java.awt.Font |
Der Parameter name gibt den Namen des gewünschten Fonts an. In allen Java-Systemen sollten die Namen SansSerif (früher Helvetica), Serif (früher TimesRoman) und Monospaced (früher Courier) unterstützt werden. Sie stehen für die systemspezifischen Proportionalzeichensätze der Familien Helvetica und TimesRoman bzw. für die nichtproportionale Familie Courier. Unter Windows werden diese Standardnamen auf die True-Type-Fonts Arial, Times New Roman und Courier New abgebildet.
Der zweite und dritte Parameter des Konstruktors ist jeweils vom Typ int. Ein beliebter Fehler besteht darin, beide zu verwechseln und so die Angaben für die Größe und die Textattribute zu vertauschen. Leider kann der Fehler vom Compiler nicht gefunden werden, sondern wird frühestens zur Laufzeit entdeckt. Selbst dann wird er leicht mit dem Fall verwechselt, dass die gewünschten Schriftarten bzw. Attribute auf dem Zielsystem nicht installiert sind. Beim Erzeugen von Font-Objekten ist also einige Vorsicht geboten. |
|
Schriften sind generell recht unportabel, deshalb ist bei ihrer Verwendung Vorsicht angebracht. Insbesondere bei der Verwendung von systemspezifischen Schriftarten kann es sein, dass der Font-Mapper eines anderen Systems eine völlig verkehrte Schrift auswählt und die Ausgabe des Programms dann unbrauchbar wird. Werden nur die genannten Standardschriften verwendet, so sollte die Schriftausgabe auf allen unterstützten Java-Systemen zumindest lesbar bleiben. Die alten Schriftnamen Helvetica, TimesRoman und Courier aus dem JDK 1.0 werden zwar noch unterstützt, sind aber als deprecated gekennzeichnet und sollten daher nicht mehr verwendet werden. |
|
Der Parameter style wird verwendet, um auszuwählen, ob ein Font in seiner Standardausprägung, fett oder kursiv angezeigt werden soll. Java stellt dafür die in Tabelle 25.1 aufgeführten numerischen Konstanten zur Verfügung. Die Werte BOLD und ITALIC können auch gemeinsam verwendet werden, indem beide Konstanten addiert werden.
Name | Wert | Bedeutung |
Font.PLAIN | 0 | Standard-Font |
Font.BOLD | 1 | Fett |
Font.ITALIC | 2 | Kursiv |
Tabelle 25.1: Style-Parameter
Der dritte Parameter des Konstruktors gibt die Größe der gewünschten Schriftart in Punkt an. Übliche Punktgrößen für die Ausgabe von Text sind 10 oder 12 Punkt.
Das folgende Beispiel gibt die drei Standardschriften in 36 Punkt aus:
001 /* Schriften.inc */ 002 003 public void paint(Graphics g) 004 { 005 Font font; 006 String[] arfonts = {"Serif","SansSerif","Monospaced"}; 007 008 for (int i=0; i<arfonts.length; ++i) { 009 font = new Font(arfonts[i],Font.PLAIN,36); 010 g.setFont(font); 011 g.drawString(arfonts[i],10,30 + (i+1)*(36+5)); 012 } 013 } |
Schriften.inc |
Abbildung 25.3: Ausgabe verschiedener Fonts
Es gibt im AWT eine Klasse GraphicsEnvironment, mit der wir uns die auf dem konkreten System verfügbaren Font-Familien abholen können:
static GraphicsEnvironment getLocalGraphicsEnvironment() String[] getAvailableFontFamilyNames() |
java.awt.GraphicsEnvironment |
Das folgende Beispiel zeigt die verfügbaren Schriftarten an:
001 /* Standardschriften.inc */ 002 003 public void paint(Graphics g) 004 { 005 Font font; 006 GraphicsEnvironment ge = 007 GraphicsEnvironment.getLocalGraphicsEnvironment(); 008 String[] arfonts = ge.getAvailableFontFamilyNames(); 009 010 for (int i=0; i<arfonts.length; ++i) { 011 font = new Font(arfonts[i],Font.PLAIN,36); 012 g.setFont(font); 013 g.drawString(arfonts[i],10,(i+1)*(36+5)); 014 } 015 } |
Standardschriften.inc |
Die Ausgabe des Programms ist (man muss das Fenster etwas größer ziehen, damit alle Schriften angezeigt werden):
Abbildung 25.4: Liste der Standardschriften
Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 7. Auflage, Addison Wesley, Version 7.0 |
<< | < | > | >> | API | © 1998, 2011 Guido Krüger & Heiko Hansen, http://www.javabuch.de |