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"> 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="k100219.html"> << </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100219.html"> < </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100221.html"> > </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100224.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 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äftigt. Java bietet aber auch die Mö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ä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ü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ät zur Verfü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üssen die Methode <a href="index_p.html#ixb101148"><font color=#000080><tt>paint</tt></font></a>
und die Methoden zur Reaktion auf Nachrichten ü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 Ü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ü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äche in der aktuellen Hintergrundfarbe.
Eine überlagernde Version kann hier natürlich ein beliebig
komplexes Darstellungsverhalten realisieren. Der Punkt (0,0) des ü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ählen Tastatur-, Maus-, Mausbewegungs-, Fokus- und Komponentenereignisse.
Die Implementierung der Ereignishandler erfolgt zweckmäß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"> 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="k100219.html"> << </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100219.html"> < </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100221.html"> > </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100224.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>
|