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/k100157.html | 220 +++++++++++++++++++++ 1 file changed, 220 insertions(+) create mode 100644 Master/Reference Architectures and Patterns/hjp5/html/k100157.html (limited to 'Master/Reference Architectures and Patterns/hjp5/html/k100157.html') diff --git a/Master/Reference Architectures and Patterns/hjp5/html/k100157.html b/Master/Reference Architectures and Patterns/hjp5/html/k100157.html new file mode 100644 index 0000000..628dd92 --- /dev/null +++ b/Master/Reference Architectures and Patterns/hjp5/html/k100157.html @@ -0,0 +1,220 @@ + + + +Handbuch der Java-Programmierung, 5. Auflage + + + + + + + + + +
 Titel  + Inhalt  + Suchen  + Index  + DOC  +Handbuch der Java-Programmierung, 5. Auflage +
 <<  +  <   +  >   + >>  + API  +Kapitel 24 - Textausgabe +
+
+ + + + +

24.1 Ausgabefunktionen

+
+ +
+ +

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

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

+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): + + +

+ + + + + +
+ +
+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
+ +Listing 24.1: Einfache Textausgabe im Grafikfenster

+

+ + +

+ +

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

+ + + + +
 Hinweis 
+
+ +

+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 +
+ + + -- cgit v1.2.3