Einführung in die Informatik - Teil 4b - Zeichnen mit der Maus im JBuilder

Ähnliche Dokumente
Einführung in die Informatik - Teil 2 -

Einführung in die Informatik - Teil 3b -

Einführung in die Informatik - Teil 6a -

Einführung in die Informatik - Teil 6b -

Ereignisverwaltung und Layout-Typen

1. Erzeugen eines neuen leeren Applets

Created by Michael Kirsch & Beat Rossmy

Benutzeroberflächen. Abstract Windowing Toolkit, Rahmen, Wächter, Ereignisbehandlung, Ausgabe, Menüs.

7.5 Mit bunten Kreisen spielen

Dossier: Pfeile und Linien

Java Game Development Fabian Birzele Programmierpraktikum 2008 / 2009

Einstieg in die Informatik mit Java

Einführung in die Informatik - Teil 5b -

Vermessung und Markierung Extras Vermessen und Markieren

Einführung in die Informatik - Teil 1b -

Grundlagen der Programmierung (GP) Prof. Dr. H. Schlingloff Joachim Hänsel

Einstieg in die Informatik mit Java

Kurze Einführung in die Arbeit mit dem Programm EUKLID ( Ac / 2008 )

Graphische Benutzungsoberflächen mit Java. Einführung in NetBeans

Tag 9: Grafische Benutzeroberflächen

Der Ball kann angezeigt werden: anzeigen( ) {... } Der Ball kann z.b. seine Größe verändern: groesseaendern(int veraenderung) {... } usw.

Klassen und Objekte. Bezug: G. Krüger, GotoJava 2 HTML-Version: Kapitel 7 und 8. Virtuelle Lehrerweiterbildung Informatik in Niedersachsen

EAD II Übung 5. Graphische Benutzungsoberfläche mit BlueJ

1 Robo Pro : Handreichungen Jahrgang 8 Arbeiten mit Robo Pro Hibsmodelle steuern

Appletprogrammierung

Einführung in Geonext

16 Zeichnen in Swing-Komponenten , Prof. Dr. D. Ratz

Eine schnelle Processing-Einführung. von Thomas Rau

Arbeitsblatt 6: Programmierung geometrischer Figuren

1. Das Koordinatensystem

Grafikprogrammierung mit Java Teil 1/2

Einführung in die Programmierung für NF. Übung 08

Ereignisverarbeitung in Java

Klausur zur Informatik A WS 2001/2002 Name: Korrektor: Punkte: a) Zeichnen Sie zu der nachstehenden Syntax in EBNF die passenden Syntaxdiagramme.

import JavaKaraProgram; public class Quadrat extends JavaKaraProgram { // Anfang von Quadrat void turnaround() { kara.turnleft(); kara.

Kapitel X - Zeichnen mit Java2D

Universität Paderborn Prof. Dr. Stefan Böttcher. Abschluss von Kapitel 2: Programmierung Grafischer Oberflächen mit der Swing-Bibliothek

Probeklausur Informatik 2 Sommersemester 2013

Konzepte objektorientierter Programmierung

Einführung in die Informatik - Teil XII Klassen und Objekte

8.6 Visualisierung der Sortieralgorithmen

Kurzanleitung Hama Photokalender v

Universität Karlsruhe (TH)

Einführung in die Informatik - Teil 1 -

Grafik in Java. 1 Werkzeugauswahl. 2 Ereignisbehandlung (Listener bzw. Adapter) - 1 -

Grafik-Programmierung

Inhaltsverzeichnis Zeichenobjekte erstellen Eine Freihandform zeichnen Objekte markieren... 2

Einführung in die Programmierung für NF. Übung

Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 08. Oktober Klausur II

So funktioniert der Stundenplan Kurzanleitung zur Bedienung der einzelnen Funktionen auf

SD-Board - Kurzbeschreibung

Tabellen. Tabelle füllen. Cursorsteuerung in der Tabelle

Einstieg in die Informatik mit Java

Handbuch. Polplan-Applet

Objektorientierte Programmierung OOP Objektorientierte Programmierung (OOP) mit Java

MINDMAPS ERSTELLEN MIT BUBBL.US

Löschen löscht den letzten Pinselstrich.

Einstieg in die Informatik mit Java

1.6 Drei mal drei Klicks bis zum 3D-Modell

Übung 1 Titelfolie, Schriftfarbe, Objekte

Objektorientierte Programmierung

Created by Michael Kirsch & Beat Rossmy

Handbuch Geoportal. der. Gemeinde Fredersdorf-Vogelsdorf

Handhabung der Computermaus

Wie erreiche ich was?

10. Pakete Einführung in die Programmierung (fbw) Sommersemester 2007 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

IM05FTLS Textgestaltung und Layout Zeichnen in Word, Grafik, WordArt. Über das Kontextmenü (rechter Mausklick in die Symbolleiste)

Eclipse Tutorial.doc

Einführung in die Dynamische Geometrie-Software GeoGebra

Onlinehilfe Geoportal Kreis Pinneberg Stand:

Menüleiste. Im Menü Werkzeuge stehen Ihnen weitere Werkzeuge zur Verfügung.

Man kann bei der Deklaration einen Wert der Variablen angeben oder später den Wert zuweisen. Beide Befehlsfolgen leisten dasselbe:

Java - AWT Basispraktikum SystemArchitektur WS 2008/ Atanas Dimitrov

GerbView. 5. März 2017

Programmieren II. Zeichnen in Swing-Komponenten. Heusch 18 Ratz Institut für Angewandte Informatik

Formen und Pfade. Rechteck, Quadrat

Zugriff auf den Ordner Eigene Tafeln

CAD Grundlagen 2 von 23

Im Original veränderbare Word-Dateien

Einfach Informatik Lernumgebung

Tabulatoren in Word 7

InDesign CS6. Grundlagen. Peter Wies, Linda York. 1. Ausgabe, 2. Aktualisierung, November 2013 INDCS6

RIO Raum Information Oberberg - Hilfe

Arbeitshilfe für Schülerinnen und Schüler

GUI Programmierung in Java

1. Anwendungen versus Applets

Tutorium zum Strukturformeleditor Stand:

Was passiert, wenn Button "Ok?" mit Maus angeklickt?

Teil 3 - Java. Grundlagen Klassen, Attribute Methoden

Tabellen. Mit gedrückter Maustaste können Sie die Randlinien ziehen. Die Maus wird dabei zum Doppelpfeil.

Bildbereiche auswählen Lasso-Auswahl

Semesterklausur 1. Hinweise:

Ab jetzt: Java ohne Kara

Rückgabewerte von Methoden

15. Ereignisse (Events)

Aufgabe 1 Erstelle mit Hilfe von GEOGEBRA ein dynamisches Geometrie-Programm, das die Mittelsenkrechte

Transkript:

Eckart Modrow Zeichnen mit der Maus im JBuilder S. 1 Einführung in die Informatik - Teil 4b - Zeichnen mit der Maus im JBuilder Inhalt: 1. Arbeiten mit der Maus 2. Aufgaben Literaturhinweise: Küchlin/Weber: Einführung in die Informatik, Objektorientiert mit Java, Springer 1998 Krüger, Guido: Handbuch der Java-Programmierung, http://www.javabuch.de oder Addison Wesley 2002

Eckart Modrow Zeichnen mit der Maus im JBuilder S. 2 1. Arbeiten mit der Maus Mausereignisse werden durch Benutzeraktionen ausgelöst, die sich auf die Computermaus beziehen. Leider werden in den unterschiedlichen Java-Versionen unterschiedliche Modelle zur Behandlung von Mausereignissen benutzt. U.a. führt das zu der unschönen Situation, dass es verschiedene Methoden zur Behandlung desselben Ereignisses gibt, die wenn man versehentlich eine falsche Bezeichnung wählt - anstandslos übersetzt werden, ohne zum gewünschten Ergebnis zu führen. (Bsp: es gibt die Methoden mousedrag() und mousedragged()) Wir werden hier das vom JBuilder unterstützte Modell benutzen, weil es so schön einfach ist. Ereignisverarbeitung kann im JBuilder im Design-Modus automatisch eingefügt werden. Wir müssen dazu die Ereignis-Registerkarte rechts im Bild anklicken. Da stehen die Mausereignisse Bei der Maus kann man die Maustaste drücken und wieder loslassen oder die Maus bewegen. Klicken wir in das weiße Feld neben den genannten Ereignissen, dann werden entsprechende Ereignisbehandlungsmethoden in den Applet-Quelltext eingefügt. Da der JBuilder einen Mouse-Adapterklasse einfügt und zur Nutzung bereitstellt, ist der Umfang des Code erheblich. Wichtig für uns sind nur die rot hervorgehobenen Zeilen. package zeichnenmitdermaus; import java.awt.*; import java.awt.event.*; import java.applet.*;

Eckart Modrow Zeichnen mit der Maus im JBuilder S. 3 public class Applet1 extends Applet public Applet1() try jbinit(); catch(exception e) e.printstacktrace(); private void jbinit() throws Exception this.addmousemotionlistener(new Applet1_this_mouseMotionAdapter(this)); this.addmouselistener(new Applet1_this_mouseAdapter(this)); void this_mousepressed(mouseevent e) void this_mousedragged(mouseevent e) class Applet1_this_mouseAdapter extends java.awt.event.mouseadapter Applet1 adaptee; Applet1_this_mouseAdapter(Applet1 adaptee) this.adaptee = adaptee; public void mousepressed(mouseevent e) adaptee.this_mousepressed(e); class Applet1_this_mouseMotionAdapter extends java.awt.event.mousemotionadapter Applet1 adaptee; Applet1_this_mouseMotionAdapter(Applet1 adaptee) this.adaptee = adaptee; public void mousedragged(mouseevent e) adaptee.this_mousedragged(e); In diese fügen wir den erforderlichen Quellcode ein.

Eckart Modrow Zeichnen mit der Maus im JBuilder S. 4 Wir wollen die Maus zum Zeichnen benutzen. Dazu merken wir uns jeweils die Koordinaten des Punktes, an dem die Maustaste gedrückt wurde und benutzen diese als ersten Anfangspunkt einer Linie, die gezeichnet wird, wenn die Maus bei gedrückter Maustaste bewegt wird. Nachdem eine Linie gezeichnet wurde, merken wir uns deren Endpunkt als neuen Anfangspunkt. Die Koordinaten des Punktes, an dem die Maus gedrückt wurde, erhalten wir vom Mausereignis MouseEvent e. Die x-koordinate mit e.getx(), die y-koordinate mit e.gety(). Diese beiden Werte speichern wir in den globalen Variablen xanf und yanf, die im gesamten Applet zur Verfügung stehen. Wir vereinbaren diese deshalb ganz am Anfang des Applets (s.u.) als ganze Zahlen. Beim Drücken der Maus, also bei der Behandlung des mousepressed-ereignisses, erhalten diese ihre Werte. void this_mousepressed(mouseevent e) xanf=e.getx(); yanf=e.gety(); Wird die Maus bei gedrückter Maustaste bewegt, dann wird das mousedragged-ereignis ausgelöst. In diesem Fall zeichnen wir eine Linie vom alten Punkt zum neuen und merken uns den neuen. Zuvor holen wir uns mit getgraphics() den aktuellen Grafikkontext. void this_mousedragged(mouseevent e) Graphics g = getgraphics(); g.drawline(xanf, yanf, e.getx(), e.gety()); xanf = e.getx(); yanf = e.gety(); Zuletzt schalten wir das Auffrischen der Grafik ab, bei der sonst jedes Mal die Zeichenfläche automatisch gelöscht wird. public void update(graphics g) paint(g);

Eckart Modrow Zeichnen mit der Maus im JBuilder S. 5 Damit erhalten wir das vollständige Programm: package zeichnenmitdermaus; import java.awt.*; import java.awt.event.*; import java.applet.*; public class Applet1 extends Applet int xanf,yanf; Koordinaten des jeweils ersten Punktes public Applet1() try jbinit(); catch(exception e) e.printstacktrace(); private void jbinit() throws Exception this.addmousemotionlistener(new Applet1_this_mouseMotionAdapter(this)); this.addmouselistener(new Applet1_this_mouseAdapter(this)); public void update(graphics g) paint(g); void this_mousepressed(mouseevent e) xanf=e.getx(); yanf=e.gety(); Löschen des Grafikbereichs verhindern. Beim jeweils ersten Tastendruck Koordinaten merken void this_mousedragged(mouseevent e) Graphics g = getgraphics(); g.drawline(xanf, yanf, e.getx(), e.gety()); xanf = e.getx(); yanf = e.gety(); Bei Mausbewegungen Linie zeichnen und neuen Anfangspunkt merken class Applet1_this_mouseAdapter extends java.awt.event.mouseadapter // wie oben

2. Aufgaben Virtuelle Lehrerweiterbildung Informatik in Niedersachsen Eckart Modrow Zeichnen mit der Maus im JBuilder S. 6 1. a: Verändern Sie die Anfangspunktkoordinaten beim Zeichnen nicht. Erzeugen Sie dann so etwas wie die abgebildeten Fächer. b: Lassen Sie die Linienfarben beim Zeichnen zufällig verändern. c: Lassen Sie die Linienfarben zufällig, aber schön verändern, so dass sich geschmackvolle Fächer ergeben. 2. Sparen Sie eine Leiste am oberen Bildrand vom Zeichnen aus. Färben Sie die Leiste ein. 3. a: Führen Sie farbige Flächen ( Buttons ) auf der oberen Leiste ein, die aus Mausklicks reagieren, z.b. ihre Farbe ändern oder sichtbar gedrückt werden. b: Beschriften Sie die Buttons. Verändern Sie bei Mausklicks auf die Buttons die Zeichenfarbe. 4. a: Lassen Sie mit Hilfe der Maus Rechtecke am Bildschirm zwischen Anfangspunkt und aktuellem Mauspunkt zeichnen. b: Zeichnen Sie die Rechtecke im invertierenden Modus. Löschen Sie die gerade gezeichneten Rechtecke nicht zu schnell, sonst sehen Sie gar nichts am Bildschirm, weil die Grafikkarte nicht schnell genug ist! c: Füllen Sie die so gezeichneten Rechtecke farbig aus, nachdem die Maustaste losgelassen wurde. d: Lassen Sie die Zeichenfarbe mit Hilfe der Buttons wählen. e: Schreiben Sie jetzt das Programm Mondrian so um, dass mondrianische Bilder mit der Maus gezeichnet werden können. 5. Benutzen Sie Buttons, um unterschiedliche Formen am Bildschirm erzeugen zu können. Man kann z.b. Kreise aufziehen, Polygone zeichnen, Dreiecke setzen,... 6. Überlegen Sie sich die auftretenden Probleme, wenn man gezeichnete Rechtecke wieder löschen möchte. Ähnliche Aufgaben erwarten Sie, wenn Sie die Rechtecke nachträglich