Links und Funktionen
Sprachumschaltung

Navigationspfad


Inhaltsbereich

Beispiel 2

Beispiel für CanvasFrame

Java source code icon Beispiel2.java — Java source code, 1 KB (1958 bytes)

Dateiinhalt

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Point;

/**
 * Ein Beispiel für die Benutzung der Klasse {@link CanvasFrame}.
 * 
 */
public class Beispiel2 {
    public static void main(String[] args) {

	int xsize = 500, ysize = 500;

	// Der folgende Befehl öffnet ein Fenster, welches eine weiße
	// Zeichenfläche enthält, welche xsize Pixel breit und
	// ysize Pixel hoch ist.
	CanvasFrame frame = new CanvasFrame("Beispiel 2", xsize, ysize);

	// Um auf der Zeichenfläche des Fensters zeichnen zu können, benutzen
	// wir ein Objekt vom Typ Graphics2D, welches wir durch den
	// Methodenaufruf frame.createGraphics() erhalten.
	Graphics2D canvas = frame.getGraphics();

	canvas.drawString("Kreis folgt dem Mauszeiger.", 10, 20);
	frame.repaint();
	Point p = frame.waitMouseMoved();

	// "while (true) { ... }" bedeutet, dass die Anweisungen in den
	// geschweiften Klammern immer wieder wiederholt werden (so lange
	// bis der Benutzer das Fenster schließt).
	while (true) {

	    // Radius des Kreises, welcher der Maus folgt
	    int radius = 40;

	    // Lösche den gesamten Inhalt des Fensters.
	    canvas.clearRect(0, 0, xsize, ysize);

	    // Ausgabe der Position des Mauszeigers
	    canvas.setColor(Color.BLACK);
	    canvas.drawString("Kreis folgt dem Mauszeiger.", 10, 20);
	    canvas.drawString("Position des Mauszeigers: " + "p.x==" + p.x
		    + ", p.y==" + p.y + ".", 10, 40);

	    // Zeichnen des Kreises um den Mauszeiger
	    canvas.setColor(Color.getHSBColor(p.x / (float) xsize, 1.0f, 1.0f));
	    canvas.drawOval(p.x - radius, p.y - radius, 2 * radius, 2 * radius);

	    // Führe die Zeicheninstruktionen tatsächlich aus.
	    frame.repaint();

	    // Warte nun so lange, bis der Benutzer die bewegt. Hat er sie
	    // bewegt, so wird dem Punkt p die neue Position der Maus
	    // zugewiesen.
	    p = frame.waitMouseMoved();

	    // Nun geht es wieder am Anfang des Blocks weiter.
	}
    }
}

Artikelaktionen


Funktionsleiste