Zeichnen in Java
Du möchtest dein eigenes Spiel programmieren oder bist einfach mit den angebotenen Standardelementen in Java unzufrieden? Wir erklären dir jetzt, wie man in Java selbst zeichnet.
Inhaltsübersicht
Grafische Implementierung von Objekten
Die grafische Implementierung von Objekten findet vor allem in Zeichenprogrammen und Spielen Verwendung, da für diese Art von Anwendungen oftmals die standardmäßig zur Verfügung gestellten GUI-Elemente nicht genügen.
Verwendung der Klasse Graphics
Um aber überhaupt zeichnen zu können, brauchen wir zunächst einmal die Klasse Graphics, denn sie hält schon viele Methoden, die wir brauchen, bereit.
Konkret enthält sie alle Grafikkontext-bezogenen Methoden. Diese definieren eine zweidimensionale Bitmap, deren Position, Farbe und Größe wir manipulieren können. Zusätzlich dazu enthält sie auch Angaben zu Zeichenfarbe und Schriftart.
Zeichenmethoden
Wichtig sind für uns vor allem die bereitgestellten Zeichenmethoden und die Methode zum Ändern der Farbe:
Objekte, die mit diesen Methoden erzeugt bzw. verändert werden, werden nicht direkt von Graphics, sondern mittels interner Klassen erzeugt.
Um auf den Grafikkontext eines Objekts zugreifen zu können, nutzen wir die Methode getGraphics. Sie liefert als Rückgabewert eine nicht-abstrakte Unterklasse.
Visualisierung mit der Paint-Methode
Sichtbar müssen wir unsere Objekte aber auch noch machen. Das können wir ganz einfach tun, indem wir die Paint-Methode aufrufen.
Wie das genau funktioniert, erklären wir dir jetzt anhand eines Beispiels:
Stell dir vor, du möchtest ein einfaches Programm zum Zeichnen von Rechtecken programmieren.
Dazu brauchst du zunächst einmal eine Leinwand. Erst legen wir fest, welche Eigenschaften diese haben soll. Wir wollen, dass Zeichnen per Mausklick erlaubt ist und erstellte Objekte sich ebenfalls durch Mausklick aktivieren bzw. markieren lassen. Dazu brauchen wir eine geeignete Ereignisbehandlung, die Reaktionen vom aktuell gewählten Werkzeug abhängig macht. Dies sollte durch Setzen boolescher Variablen möglich sein.
Leinwand und Zeichenwerkzeuge
Los geht’s! Wir erzeugen eine Klasse namens Geometry, der wir die Attribute‚ ‚Border Color‘ und ‚Selected‘ zuweisen. Nun implementieren wir die Methoden boolean hoverMouse und void paint().
Um zur Laufzeit des Programms nicht den Überblick zu verlieren, fügen wir noch einen GeometryContainer hinzu, der die Verwaltung der sichtbaren Objekte übernimmt.
Als Leinwand selbst, können wir ein Panel verwenden. Das muss aber noch in der Lage sein, gezeichnete Objekte anzuzeigen, und auf Mausereignisse zu reagieren. Die Leinwand wird automatisch beim Ändern des Datencontainers aktualisiert.
Zuletzt brauchen wir noch ein Fenster mit Menü, das Schaltflächen für unsere Werkzeugauswahl bereitstellt und die Zeichenfläche enthält. Außerdem bietet es uns die Möglichkeit des Speicherns und Ladens.
Zeichnen der Elemente
So! Nun willst du ein Rechteck zeichnen. Dazu wählst du einfach das GUI-Element, das dieses Werkzeug „enthält“. Daraufhin wird in der Ereignisbehandlung die zugehörige boolesche Variable auf true gesetzt.
Klickst du nun auf die Leinwand, werden die Variablen pressedX und pressedY auf die Koordinaten deiner Mausposition gesetzt und ein Rechteck mit den Seitenlängen null wird erzeugt.
Bewegst du die Maus nun, um das Rechteck aufzuziehen, werden permanent die Seitenlängen aktualisiert. Lässt du die Maustaste los, wird die boolesche Variable mousedrawRect auf false gesetzt und die Aktion ist abgeschlossen.
Zu guter Letzt müssen wir bereits während des Aufziehens nach jeder Bewegung der Maus die repaint() Funktion aufrufen, damit das besagte Rechteck auch aktualisiert und nicht nur überzeichnet wird.
Super! Jetzt weißt du sogar wie du Elemente in Java zeichnen kannst. Vor allem aber kannst du jetzt ein voll funktionsfähiges Spiel programmieren. Viel Spaß dabei!