diff options
| author | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
|---|---|---|
| committer | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
| commit | 33613a85afc4b1481367fbe92a17ee59c240250b (patch) | |
| tree | 670b842326116b376b505ec2263878912fca97e2 /Master/Reference Architectures and Patterns/hjp5/html/k100157.html | |
| download | Studium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.gz Studium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.bz2 | |
Diffstat (limited to 'Master/Reference Architectures and Patterns/hjp5/html/k100157.html')
| -rw-r--r-- | Master/Reference Architectures and Patterns/hjp5/html/k100157.html | 220 |
1 files changed, 220 insertions, 0 deletions
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 @@ +<html>
+<head>
+<title>
+Handbuch der Java-Programmierung, 5. Auflage
+</title>
+</head>
+<body>
+<a name="startofbody"></a>
+<script language="JavaScript" src="hjp4lib.js">
+</script>
+<script language="JavaScript">
+installKbdHandler("97,#startofbody;101,#endofbody;116,cover.html;122,k100003.html;115,search.html;105,index.html;100,JDKDOCS;112,APIDOCS;104,k100156.html;106,k100156.html;107,k100158.html;108,k100161.html");
+</script>
+<table border=0 cellpadding=0 cellspacing=1 width="100%">
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html"> Titel </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html"> Inhalt </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html"> Suchen </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html"> Index </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()"> DOC </a>
+<td align="right">Handbuch der Java-Programmierung, 5. Auflage
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100156.html"> << </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100156.html"> < </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100158.html"> > </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100161.html"> >> </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()"> API </a>
+<td align="right">Kapitel 24 - Textausgabe
+</table>
+<hr>
+
+
+<!-- Section -->
+<a name="sectlevel2id024001"></a>
+<h2>24.1 Ausgabefunktionen </h2>
+<hr>
+<ul>
+<li><a href="k100157.html#sectlevel2id024001">24.1 Ausgabefunktionen</a>
+</ul>
+<hr>
+
+<p>
+Neben den Methoden zur Ausgabe von Linien- oder Flächengrafiken
+gibt es in Java die Möglichkeit, <i>Text</i> in einem Fenster
+auszugeben. Die dafür vorgesehenen Methoden <a name="ixa101575"><a href="index_d.html#ixb101193"><font color=#000080><tt>drawString</tt></font></a></a>,
+<a name="ixa101576"><a href="index_d.html#ixb101194"><font color=#000080><tt>drawChars</tt></font></a></a>
+und <a name="ixa101577"><a href="index_d.html#ixb101195"><font color=#000080><tt>drawBytes</tt></font></a></a>
+gehören ebenfalls zur Klasse <a href="index_g.html#ixb101149"><font color=#000080><tt>Graphics</tt></font></a>:
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#EEFFCC">
+<tr>
+<td valign=top width=100%>
+<font color="#660066">
+<pre>
+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
+)
+</pre>
+</font>
+</td>
+<td valign=top>
+<a href="../jdkdocs/api/java/awt/Graphics.html" onClick="this.href=getApiDoc('java.awt.Graphics')"><font color="#660066" size=-1>java.awt.Graphics</font></a></td>
+</tr>
+</table>
+
+<p>
+Die einfachste Methode, Text auszugeben, besteht darin, <a href="index_d.html#ixb101193"><font color=#000080><tt>drawString</tt></font></a>
+aufzurufen und dadurch den String <font color="#000077"><tt>str</tt></font>
+im Grafikfenster an der Position <font color="#000077"><tt>(x,y)</tt></font>
+auszugeben. Das Koordinatenpaar <font color="#000077"><tt>(x,y)</tt></font>
+bezeichnet dabei das linke Ende der <i>Basislinie</i> des ersten Zeichens
+in <font color="#000077"><tt>str</tt></font>. Die Bedeutung der Basislinie
+wird später bei der Beschreibung der Font-Metriken erläutert.
+
+<p>
+In dem folgenden Beispiel wird versucht, einen String, der die Größe
+der Client-Area angibt, zentriert im Ausgabefenster auszugeben (wir
+verwenden immer noch <a href="k100153.html#grafikrahmenprog">Listing 23.4</a>
+aus <a href="k100150.html#kapitelgrafikausgabe">Kapitel 23</a>):
+<a name="textausgabebsp"></a>
+
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#DDDDDD">
+<tr>
+<td valign=top>
+<font color="#000055">
+<pre>
+<font color="#555555">001 </font><font color="#00AA00">/* Textausgabe.inc */</font>
+<font color="#555555">002 </font>
+<font color="#555555">003 </font><font color="#0000AA">public</font> <font color="#006699">void</font> paint(Graphics g)
+<font color="#555555">004 </font>{
+<font color="#555555">005 </font> <font color="#006699">int</font> maxX=getSize().width-getInsets().left-getInsets().right;
+<font color="#555555">006 </font> <font color="#006699">int</font> maxY=getSize().height-getInsets().top-getInsets().bottom;
+<font color="#555555">007 </font>
+<font color="#555555">008 </font> g.drawString(
+<font color="#555555">009 </font> <font color="#0000FF">"Die Client-Area ist "</font>+maxX+<font color="#0000FF">"*"</font>+maxY+<font color="#0000FF">" Pixel groß"</font>,
+<font color="#555555">010 </font> getInsets().left + maxX/2,
+<font color="#555555">011 </font> getInsets().top + maxY/2
+<font color="#555555">012 </font> );
+<font color="#555555">013 </font>}</pre>
+</font>
+</td>
+<td valign=top align=right>
+<a href="../examples/Textausgabe.inc"><font color="#000055" size=-1>Textausgabe.inc</font></a></td>
+</tr>
+</table>
+<i>
+Listing 24.1: Einfache Textausgabe im Grafikfenster</i></p>
+<p>
+<a name="imageid024001"></a>
+<img src="images/TextAusgabe.gif">
+<p>
+
+<p><i>
+Abbildung 24.1: Einfache Textausgabe</i></p>
+
+<p>
+Man kann an diesem Beispiel gut sehen, wie die Größe der
+Client-Area ermittelt werden kann. Zunächst wird durch Aufruf
+von <a name="ixa101578"><a href="index_g.html#ixb101196"><font color=#000080><tt>getSize</tt></font></a></a>
+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 <a name="ixa101579"><a href="index_g.html#ixb101153"><font color=#000080><tt>getInsets</tt></font></a></a>
+zugegriffen werden. Sie gibt die Abmessungen der Elemente an, die
+um die Client-Area herum platziert sind.
+
+<p>
+<a href="k100157.html#randelementefenster">Abbildung 24.2</a> erweitert
+das in <a href="k100150.html#kapitelgrafikausgabe">Kapitel 23</a>
+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 <i>x</i>-Koordinate
+<font color="#000077"><tt>getInsets().left</tt></font> und die <i>y</i>-Koordinate
+<font color="#000077"><tt>getInsets().top</tt></font>.
+<p>
+<a name="randelementefenster"></a>
+<img src="images/FensterRand.gif">
+<p>
+
+<p><i>
+Abbildung 24.2: Die Randelemente eines Fensters</i></p>
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100%>
+<tr>
+<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top width=1000>
+
+<p>
+Leider hat das Programm einen kleinen Schönheitsfehler, denn
+der Mittelpunkt des Fensters wird zur Ausgabe des <i>ersten</i> Zeichens
+verwendet, obwohl dort eigentlich der Mittelpunkt des gesamten Strings
+liegen sollte. Wir werden dieses Beispiel später komplettieren,
+wenn uns mit Hilfe von <i>Font-Metriken</i> die Möglichkeit zur
+Verfügung steht, die Breite und Höhe eines Strings zu messen.</td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top>
+<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#000077">
+<tr>
+<td><font color="#FFFFFF"> Hinweis </font></td>
+</tr>
+</table>
+</td>
+<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
+</tr>
+</table>
+
+<p>
+Die Methode <a href="index_d.html#ixb101193"><font color=#000080><tt>drawString</tt></font></a>
+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 <a name="ixa101580"><i>2D-API</i></a>
+des JDK 1.2 stellt darüber hinaus viele zusätzliche Grafikfunktionen
+plattformübergreifend zur Verfügung.
+
+<p>
+Die Methoden <a href="index_d.html#ixb101194"><font color=#000080><tt>drawChars</tt></font></a>
+und <a href="index_d.html#ixb101195"><font color=#000080><tt>drawBytes</tt></font></a>
+sind leichte Variationen von <a href="index_d.html#ixb101193"><font color=#000080><tt>drawString</tt></font></a>.
+Anstelle eines Strings erwarten sie ein Array von Zeichen bzw. Bytes
+als Quelle für den auszugebenden Text. Mit <font color="#000077"><tt>offset</tt></font>
+und <font color="#000077"><tt>length</tt></font> stehen zwei zusätzliche
+Parameter zur Verfügung, die zur Angabe der Startposition bzw.
+der Anzahl der auszugebenden Zeichen verwendet werden können.
+<hr>
+<table border=0 cellpadding=0 cellspacing=1 width="100%">
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html"> Titel </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html"> Inhalt </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html"> Suchen </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html"> Index </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()"> DOC </a>
+<td align="right">Handbuch der Java-Programmierung, 5. Auflage, Addison
+Wesley, Version 5.0.1
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100156.html"> << </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100156.html"> < </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100158.html"> > </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100161.html"> >> </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()"> API </a>
+<td align="right">© 1998, 2007 Guido Krüger & Thomas
+Stark, <a href="http://www.javabuch.de">http://www.javabuch.de</a>
+</table>
+<a name="endofbody"></a>
+</body>
+</html>
|
