From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- .../hjp5/html/k100158.html | 470 +++++++++++++++++++++ 1 file changed, 470 insertions(+) create mode 100644 Master/Reference Architectures and Patterns/hjp5/html/k100158.html (limited to 'Master/Reference Architectures and Patterns/hjp5/html/k100158.html') diff --git a/Master/Reference Architectures and Patterns/hjp5/html/k100158.html b/Master/Reference Architectures and Patterns/hjp5/html/k100158.html new file mode 100644 index 0000000..31f877a --- /dev/null +++ b/Master/Reference Architectures and Patterns/hjp5/html/k100158.html @@ -0,0 +1,470 @@ + + + +Handbuch der Java-Programmierung, 5. Auflage + + + + + + + + + +
 Titel  + Inhalt  + Suchen  + Index  + DOC  +Handbuch der Java-Programmierung, 5. Auflage +
 <<  +  <   +  >   + >>  + API  +Kapitel 24 - Textausgabe +
+
+ + + + +

24.2 Unterschiedliche Schriftarten

+
+ +
+ + + + +

24.2.1 Font-Objekte

+ +

+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 sind beide 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.

+ + + + +
 Warnung 
+
+

+ + + + + + + + + + + +
+ +

+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.

+ + + + +
 Warnung 
+
+ +

+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 24.1 aufgeführten +numerischen Konstanten zur Verfügung. Die Werte BOLD und ITALIC +können auch gemeinsam verwendet werden, indem beide Konstanten +addiert werden. + +

+ + + + + + + + + + + + + + + + + + +
NameWertBedeutung
Font.PLAIN0Standard-Font
Font.BOLD1Fett
Font.ITALIC2Kursiv
+

+Tabelle 24.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
+ +Listing 24.2: Ausgabe verschiedener Schriften

+

+ + +

+ +

+Abbildung 24.3: Ausgabe verschiedener Fonts

+

+ + + + + + + + + +
+ +

+Die Abbildung von Schriftnamen im JDK auf die dazu passenden Schriften +des Betriebssystems wird durch die Datei font.properties +im lib-Verzeichnis des JDK gesteuert, +die zur Laufzeit vom AWT interpretiert wird. Werden hier Anpassungen +vorgenommen, so ändert sich die Darstellung der Standardschriften.

+ + + + +
 Hinweis 
+
+ + + + +

24.2.2 Standardschriftarten

+ +

+Es gibt im AWT eine Klasse Toolkit, +die als Hilfsklasse bei der Abbildung der portablen AWT-Eigenschaften +dient. Toolkit +ist standardmäßig abstrakt, wird aber von jeder AWT-Implementierung +konkretisiert und den Anwendungen über die Klassenmethode getDefaultToolkit +zur Verfügung gestellt. Während die meisten Methoden von +Toolkit +nur für Implementatoren von AWT-Portierungen von Interesse sind, +gibt es auch einige Methoden, die in der Anwendung sinnvoll verwendet +werden können. Eine dieser Methoden ist getFontList: +

+ + + + + +
+ +
+public String[] getFontList()
+
+
+
+java.awt.Toolkit
+ +

+Diese Methode liefert ein Array von Strings mit den Namen der Standardschriftarten, +die in der vorliegenden AWT-Implementierung verfügbar sind. + +

+Die folgende paint-Methode +listet alle verfügbaren Standardschriften auf dem Bildschirm +auf: + + +

+ + + + + +
+ +
+001 /* Standardschriften.inc */
+002 
+003 public void paint(Graphics g)
+004 {
+005   Font font;
+006   String[] arfonts = Toolkit.getDefaultToolkit().getFontList();
+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,(i+1)*(36+5));
+012   }
+013 }
+
+
+Standardschriften.inc
+ +Listing 24.3: Auflistung aller Standardschriften

+

+ + + + + + + + + + + +
+ +

+Mit dem JDK 1.2 wurde die Methode getFontList +als deprecated +markiert. Sie wird ersetzt durch die Methode getAvailableFontFamilyNames +der Klasse GraphicsEnvironment, +die im JDK 1.2 dazu dient, die verfügbaren Grafikgeräte +und -konfigurationen zu beschreiben. Mit der statischen Methode getLocalGraphicsEnvironment +kann das aktuelle GraphicsEnvironment-Objekt +beschafft werden.

+ + + + +
 JDK1.1-6.0 
+
+

+ + + + + +
+ +
+static GraphicsEnvironment getLocalGraphicsEnvironment()
+
+String[] getAvailableFontFamilyNames()
+
+
+
+java.awt.GraphicsEnvironment
+ +

+Das vorige Beispiel müsste also wie folgt geändert werden: + + +

+ + + + + +
+ +
+001 /* Standardschriften12.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 }
+
+
+Standardschriften12.inc
+ +Listing 24.4: Auflistung der Standardschriften

+ +

+Die Ausgabe des Programms ist (man muss das Fenster etwas größer +ziehen, damit alle Schriften angezeigt werden): +

+ + +

+ +

+Abbildung 24.4: Liste der Standardschriften

+ +

+Die letzte Schrift ist ZapfDingbats, +eine Schrift mit vorwiegend grafischen Symbolen. Da ihr Zeichensatz +anders organisiert ist als bei normalen Schriften, werden lediglich +eckige Kästchen ausgegeben. +


+ + + +
 Titel  + Inhalt  + Suchen  + Index  + DOC  +Handbuch der Java-Programmierung, 5. Auflage, Addison +Wesley, Version 5.0.1 +
 <<  +  <   +  >   + >>  + API  +© 1998, 2007 Guido Krüger & Thomas +Stark, http://www.javabuch.de +
+ + + -- cgit v1.2.3