From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001
From: Sven Eisenhauer
+Neben den Methoden zur Ausgabe von Linien- oder Flächengrafiken
+gibt es in Java die Möglichkeit, Text in einem Fenster
+auszugeben. Die dafür vorgesehenen Methoden drawString,
+drawChars
+und drawBytes
+gehören ebenfalls zur Klasse Graphics:
+
+
+Die einfachste Methode, Text auszugeben, besteht darin, drawString
+aufzurufen und dadurch den String str
+im Grafikfenster an der Position (x,y)
+auszugeben. Das Koordinatenpaar (x,y)
+bezeichnet dabei das linke Ende der Basislinie des ersten Zeichens
+in str. Die Bedeutung der Basislinie
+wird später bei der Beschreibung der Font-Metriken erläutert.
+
+
+In dem folgenden Beispiel wird versucht, einen String, der die Größe
+der Client-Area angibt, zentriert im Ausgabefenster auszugeben (wir
+verwenden immer noch Listing 23.4
+aus Kapitel 23):
+
+
+
+
+
+
+ Titel
+ Inhalt
+ Suchen
+ Index
+ DOC
+ Handbuch der Java-Programmierung, 5. Auflage
+
+ <<
+ <
+ >
+ >>
+ API
+ Kapitel 24 - Textausgabe
+
+
+
+
+
+24.1 Ausgabefunktionen
+
+
+
+
+
+
+
+
+
+
+
+
+
+public void drawString(
+ String str, int x, int y
+)
+
+public void drawChars(
+ char[] data, int offset, int length, int x, int y
+)
+
+public void drawBytes(
+ byte[] data, int offset, int length, int x, int y
+)
+
+
+
+java.awt.Graphics
+
+
+
+Listing 24.1: Einfache Textausgabe im Grafikfenster
+
+
+
+
+
+001 /* Textausgabe.inc */
+002
+003 public void paint(Graphics g)
+004 {
+005 int maxX=getSize().width-getInsets().left-getInsets().right;
+006 int maxY=getSize().height-getInsets().top-getInsets().bottom;
+007
+008 g.drawString(
+009 "Die Client-Area ist "+maxX+"*"+maxY+" Pixel groß",
+010 getInsets().left + maxX/2,
+011 getInsets().top + maxY/2
+012 );
+013 }
+
+
+Textausgabe.inc
+
+ +
+Abbildung 24.1: Einfache Textausgabe
+ ++Man kann an diesem Beispiel gut sehen, wie die Größe der +Client-Area ermittelt werden kann. Zunächst wird durch Aufruf +von getSize +die Größe des gesamten Fensters bestimmt. Anschließend +werden die Teile des Fensters herausgerechnet, die nicht der Client-Area +zur Verfügung stehen, nämlich der Rahmen und die Titelzeile. +Auf diese Informationen kann mit Hilfe der Methode getInsets +zugegriffen werden. Sie gibt die Abmessungen der Elemente an, die +um die Client-Area herum platziert sind. + +
+Abbildung 24.2 erweitert +das in Kapitel 23 +erläuterte Koordinatensystem des AWT um die erwähnten Randelemente. +Dabei ist insbesondere zu erkennen, dass der Punkt (0,0) nicht den +Ursprung der Client-Area bezeichnet, sondern die linke obere Ecke +des Fensters. Der Ursprung der Client-Area hat die x-Koordinate +getInsets().left und die y-Koordinate +getInsets().top. +
+ +
+Abbildung 24.2: Die Randelemente eines Fensters
++
![]() |
+
+
+ +Leider hat das Programm einen kleinen Schönheitsfehler, denn +der Mittelpunkt des Fensters wird zur Ausgabe des ersten Zeichens +verwendet, obwohl dort eigentlich der Mittelpunkt des gesamten Strings +liegen sollte. Wir werden dieses Beispiel später komplettieren, +wenn uns mit Hilfe von Font-Metriken die Möglichkeit zur +Verfügung steht, die Breite und Höhe eines Strings zu messen. |
+
+
|
+![]() |
+
+Die Methode drawString +ist leider nicht besonders vielseitig, denn sie kann Text weder drehen +noch clippen. Sie interpretiert auch keine eingebetteten Formatierungen, +wie beispielsweise einen Zeilenumbruch oder einen Tabulator. Da es +im Windows-API all diese und noch weitere Möglichkeiten gibt, +zeigt sich hier wie auch an anderen Stellen des AWT, dass eine Java-Portierung +in der Regel nicht alle Funktionen des darunterliegenden Betriebssystems +zur Verfügung stellen kann. Das 2D-API +des JDK 1.2 stellt darüber hinaus viele zusätzliche Grafikfunktionen +plattformübergreifend zur Verfügung. + +
+Die Methoden drawChars +und drawBytes +sind leichte Variationen von drawString. +Anstelle eines Strings erwarten sie ein Array von Zeichen bzw. Bytes +als Quelle für den auszugebenden Text. Mit offset +und length stehen zwei zusätzliche +Parameter zur Verfügung, die zur Angabe der Startposition bzw. +der Anzahl der auszugebenden Zeichen verwendet werden können. +
| 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 + |