summaryrefslogtreecommitdiffstats
path: root/Master/Reference Architectures and Patterns/hjp5/html/k100220.html
blob: 8886c6f21123fe8712b99bf98fc2f67f77e0d759 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<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,k100219.html;106,k100219.html;107,k100221.html;108,k100224.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">&nbsp;Titel&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html">&nbsp;Inhalt&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html">&nbsp;Suchen&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html">&nbsp;Index&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()">&nbsp;DOC&nbsp;</a>
<td align="right">Handbuch der Java-Programmierung, 5. Auflage
<tr bgcolor="#EEFFCC">
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100219.html">&nbsp;&lt;&lt;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100219.html">&nbsp;&nbsp;&lt;&nbsp;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100221.html">&nbsp;&nbsp;&gt;&nbsp;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100224.html">&nbsp;&gt;&gt;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()">&nbsp;API&nbsp;</a>
<td align="right">Kapitel 33 - Eigene Dialogelemente
</table>
<hr>


<!-- Section -->
<a name="sectlevel2id033001"></a>
<h2>33.1 Die Klasse Canvas </h2>
<hr>
<ul>
<li><a href="k100220.html#sectlevel2id033001">33.1 Die Klasse Canvas</a>
</ul>
<hr>

<p>
Bisher haben wir uns nur mit <i>vordefinierten</i> Dialogelementen
besch&auml;ftigt. Java bietet aber auch die M&ouml;glichkeit, Dialogelemente
selbst zu definieren und wie eine vordefinierte Komponente zu verwenden.
In der <i>Java-Beans-Spezifikation</i> wurden die dazu erforderlichen
Techniken beschrieben und die zugrunde liegenden Konzepte definiert.
Wir wollen uns an dieser Stelle zun&auml;chst mit den Grundlagen der
Entwicklung eigener Dialogelemente auf der Basis der Klasse <a name="ixa102292"><a href="index_c.html#ixb101712"><font color=#000080><tt>Canvas</tt></font></a></a>
befassen, wie sie mit dem <font color="#000077"><tt>SystemColorViewer</tt></font>
in <a href="k100217.html#abschnittscrollpane">Abschnitt 32.11</a>
angedeutet werden. Eine ausf&uuml;hrliche Beschreibung von Java-Beans
findet sich in <a href="k100279.html#kapitelbeans">Kapitel 44</a>.

<p>
Ein <a href="index_c.html#ixb101712"><font color=#000080><tt>Canvas</tt></font></a>
ist ein frei definierbares Dialogelement, das in der Grundversion
praktisch keinerlei Funktionalit&auml;t zur Verf&uuml;gung stellt.
Damit ein <a href="index_c.html#ixb101712"><font color=#000080><tt>Canvas</tt></font></a>
etwas Sinnvolles tun kann, muss daraus eine eigene Klasse abgeleitet
werden, und in dieser m&uuml;ssen die Methode <a href="index_p.html#ixb101148"><font color=#000080><tt>paint</tt></font></a>
und die Methoden zur Reaktion auf Nachrichten &uuml;berlagert werden.
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#EEFFCC">
<tr>
<td valign=top width=100%>
<font color="#660066">
<pre>
public Canvas()
</pre>
</font>
</td>
<td valign=top>
<a href="../jdkdocs/api/java/awt/Canvas.html" onClick="this.href=getApiDoc('java.awt.Canvas')"><font color="#660066" size=-1>java.awt.Canvas</font></a></td>
</tr>
</table>

<p>
Durch &Uuml;berlagern der <a href="index_p.html#ixb101148"><font color=#000080><tt>paint</tt></font></a>-Methode
sorgt eine <a href="index_c.html#ixb101712"><font color=#000080><tt>Canvas</tt></font></a>-Komponente
f&uuml;r die Darstellung auf dem Bildschirm: 
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#EEFFCC">
<tr>
<td valign=top width=100%>
<font color="#660066">
<pre>
public void paint(Graphics g)
</pre>
</font>
</td>
<td valign=top>
<a href="../jdkdocs/api/java/awt/Canvas.html" onClick="this.href=getApiDoc('java.awt.Canvas')"><font color="#660066" size=-1>java.awt.Canvas</font></a></td>
</tr>
</table>

<p>
Die Standardversion von <a href="index_p.html#ixb101148"><font color=#000080><tt>paint</tt></font></a>
zeichnet nur die Ausgabefl&auml;che in der aktuellen Hintergrundfarbe.
Eine &uuml;berlagernde Version kann hier nat&uuml;rlich ein beliebig
komplexes Darstellungsverhalten realisieren. Der Punkt (0,0) des &uuml;bergebenen
<a href="index_g.html#ixb101149"><font color=#000080><tt>Graphics</tt></font></a>-Objektes
entspricht dabei der linken oberen Ecke des Ausgabebereichs. 

<p>
Da die Klasse <a href="index_c.html#ixb101712"><font color=#000080><tt>Canvas</tt></font></a>
aus <a href="index_c.html#ixb101302"><font color=#000080><tt>Component</tt></font></a>
abgeleitet ist, bekommt ein <a href="index_c.html#ixb101712"><font color=#000080><tt>Canvas</tt></font></a>-Objekt
alle Ereignisse zugestellt, die auch an eine Komponente gehen. Hierzu
z&auml;hlen Tastatur-, Maus-, Mausbewegungs-, Fokus- und Komponentenereignisse.
Die Implementierung der Ereignishandler erfolgt zweckm&auml;&szlig;igerweise
so, wie es im vierten Entwurfsmuster in <a href="k100180.html#kapiteleventhandling">Kapitel 28</a>
vorgestellt wurde. 
<hr>
<table border=0 cellpadding=0 cellspacing=1 width="100%">
<tr bgcolor="#EEFFCC">
<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html">&nbsp;Titel&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html">&nbsp;Inhalt&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html">&nbsp;Suchen&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html">&nbsp;Index&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()">&nbsp;DOC&nbsp;</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="k100219.html">&nbsp;&lt;&lt;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100219.html">&nbsp;&nbsp;&lt;&nbsp;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100221.html">&nbsp;&nbsp;&gt;&nbsp;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100224.html">&nbsp;&gt;&gt;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()">&nbsp;API&nbsp;</a>
<td align="right">&copy; 1998, 2007 Guido Kr&uuml;ger &amp; Thomas
Stark, <a href="http://www.javabuch.de">http://www.javabuch.de</a>
</table>
<a name="endofbody"></a>
</body>
</html>