Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
206<br />
8 <strong>Das</strong> <strong>SWT</strong><br />
Grafikkontext wieder auf den Grundzustand zurückbringen zu können.<br />
Außerdem schalten wir die Kantenglättung ein – eine weitere<br />
Schönheit von Java2D.<br />
// AWT-Frame für Canvas erzeugen<br />
java.awt.Frame canvasFrame = <strong>SWT</strong>_AWT<br />
.new_Frame(canvasComp);<br />
// Canvas erzeugen und zufügen<br />
final java.awt.Canvas canvas = new java.awt.Canvas();<br />
canvasFrame.add(canvas);<br />
// Graphischen Kontext holen und in Java2D-Kontext umwandeln<br />
final java.awt.Graphics2D g2d = (java.awt.Graphics2D) canvas<br />
.getGraphics();<br />
// Kantenglättung einschalten<br />
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,<br />
RenderingHints.VALUE_ANTIALIAS_ON);<br />
// Ursprüngliche Transformation merken<br />
final java.awt.geom.AffineTransform origTransform = g2d<br />
.getTransform();<br />
Nun erzeugen wir die Löschtaste. In ihrer Ereignisverarbeitung wird<br />
ein Neuzeichnen des Canvas veranlasst, und zwar durch den Aufruf<br />
der redraw()-Methode für das <strong>SWT</strong>-Container-Composite.<br />
// Clear-Taste anlegen und positionieren<br />
Button clearButton = new Button(shell, <strong>SWT</strong>.PUSH);<br />
clearButton.setText("Clear");<br />
data = new GridData();<br />
data.horizontalAlignment = GridData.CENTER;<br />
clearButton.setLayoutData(data);<br />
// Ereignisverarbeitung für Taste<br />
clearButton<br />
.addSelectionListener(new SelectionAdapter() {<br />
public void widgetSelected(SelectionEvent e) {<br />
// Wortliste löschen und Canvas neu zeichnen<br />
wordList.clear();<br />
canvasComp.redraw();<br />
}<br />
});<br />
Bei einem Mausklick auf den Canvas (hier befinden wir uns also in der<br />
AWT-Ereignisverarbeitung) wird das Texteingabefeld wechselweise<br />
sichtbar oder unsichtbar geschaltet. Nur bei der allerersten Benutzung<br />
wird dieser kleine Editor neu erzeugt. Da AWT-Canvassen natürlich<br />
keine <strong>SWT</strong>-Widgets zugefügt werden können, erzeugen wir diesen Editor<br />
in einer eigenen Shell. Wichtig ist, diese Shell nicht-modal anzule-