Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
Abstrakte Klassen HS Merseburg (FH) WS 06/07.
Java: Programmierung grafischer Oberflächen
Java: Objektorientierte Programmierung
Java: Programmierung grafischer Oberflächen
Java: Grundlagen der Objektorientierung
Ein Beispiel in Java.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 7 User Interfaces in Java Sommersemester 2003 Lars Bernard.
Einführung in die OOP in Java
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 9. Vorlesung WS 2002/2003.
Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. D. Dörschlag Einführung in die Programmierung mit Java.
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
Abstrakte Klassen, Interface
DVG Klassen und Objekte
Klassen 02 - Klassen.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Einführung in die Programmierung Datensammlung
© 2004 Pohlig - Taulien Swing Ereignissteuerung. © 2004 Pohlig - Taulien GK Informatik mit Java 2 Auf Button-Klick reagieren.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 7 Sitzung 7: User Interfaces in Java.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Herzlich Willkommen zu „Einführung in die Programmierung mit Java“
AWT und JFC Abstract Windowing Toolkit
Java: Programmierung grafischer Oberflächen
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
EPROG Tutorium #6 Philipp Effenberger
EPROG Tutorium #5 Philipp Effenberger
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Polymorphie (Vielgestaltigkeit). Wenn eine Methode, wie z.B. print für verschiedene Programmteile steht (und z.B. einmal Objekte verschiedener Klassen.
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
Java-Kurs Übung Benutzeroberflächen und Graphik Frames (Fenster)
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
Einführung in die Programmierung mit Java
Einführung in die Programmierung mit Java
Java-Kurs Übung Besprechung der Hausaufgabe
Lösung der Hausaufgaben von Vorlesung 10 Universität Bonn Institut für Kartografie und Geoinformation Dipl.-Ing. Dörschlag, Dr. Gröger, Prof. Dr. Plümer.
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003.
Institut für Kartographie und Geoinformation Prof. Dr. L. Plümer, Dipl.-Ing. D. Dörschlag, Dr. G. Gröger Einführung in die Programmierung mit Java 13.
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung.
1 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 Malprogramm der vollständige und kommentierte Quellcode für.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 14. Vorlesung WS 2001/2002.
Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003 Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger,
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 9. Vorlesung WS 2001/2002.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 10. Vorlesung WS 2002/2003.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. D. Dörschlag Einführung in die Programmierung mit Java.
Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit.
Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit.
Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit.
Objektorientierte Programmierung (OOP)
GUI Programmierung in Java Branimir Djordjevic. GUI - Wichtige Begriffe -  Die Swing-Bibliothek in Java stellt zum Beispiel die folgenden Windows zur.
Tutorium Software-Engineering SS14 Florian Manghofer.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Einführung in die Programmierung mit Java
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
Einführung in die Programmierung mit Java
1. Die rekursive Datenstruktur Liste 1
 Präsentation transkript:

Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit Java 12. Vorlesung WS-03/04

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 Mein Malprogramm Smile

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 Mein Malprogramm Smile Leinwand zum Bemalen: JPanel Funktionsknöpfe : JToolBox + JToggleButton Anwendungsmenü : JMenuBar + JMenu + JMenuItem

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 javax.swing.JMenuBar das Anwendungsmenü Kann allen Swing-Form- Komponenten hinzugefügt werden Swing-Form-Komponenten sind: JFrame, JApplet, JPanel, JInternalFrame und Jdialog Form-Komponenten können genau eine sichtbare JMenuBar besitzen, alle anderen werden verdeckt. Ein JMenuBar kann Komponenten von Typ JMenu aufnehmen

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 javax.swing.JMenuBar Menupunkte hinzufügen öffnen durch Klick mit rechter Maustaste

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 javax.swing.JMenu der Titel des Menüs

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 javax.swing.JMenu hinzufügen von Menüpunkten

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 javax.swing.JMenuItem ein einfacher Menüpunkt

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 javax.swing.JMenuItem Menüpunkte mit Aktionen verbinden

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 javax.swing.JPanel die Zeichenfläche Anlegen : Über das Menü (in Forte): 1.Datei -> Neu 2.im sich öffenden Fenster „Templates“ den Ordner „Swing Forms“ öffnen und „JPanel“ auswählen und weiter mit Next 3.den Namen eingeben (, eventuell das Package (Verzeichnis) in dem die neu Klasse liegen soll auswählen) und mit Finish das Erzeugen abschließen 4.es öffnet sich automatisch die Forte-Umgebung „GUI Editing“

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 javax.swing.JPanel die Zeichenfläche JPanel sind einfache Oberflächen JPanel sind keine Anwendung JPanel können andere Komponenten aufnehmen JPanel haben ein Layout z.B. ein BorderLayout

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 Malen auf einem JPanel Nötig ist das Überschreiben (siehe Polymorphie) der Methode :... public void paintComponent( java.awt.Graphics g){ super.paintComponent( g);... } Wichtig, da nur dann sämtliche Einstellungen die in Attributen der Klasse JPanel gespeichert sind berücksichtigt werden Der Grafikkontext der Oberfläche

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 Malen auf einem JPanel Beispiel : Beispiel : malt einen Kreis und einen Text public class Leinwand extends JPanel { public void paintComponent( java.awt.Graphics g){ super.paintComponent( g); java.awt.Graphics2D g2d = (java.awt.Graphics2D) g; g2d.drawOval( 13, 12, 14, 14 ); g2d.setColor( new java.awt.Color( 0, 0, 255)); g2d.setStroke( new java.awt.BasicStroke(2)); g2d.drawString( “Mein Text“, 80, 80 );... } Zugriff auf den erweiterten Grafikkontext  mehr Funktionen // malt einen Kreis // ändern der Malfarbe // ändern der Stricheigenschaften // einen Text ausgeben

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 JPanel zur Anwendung hinzufügen public class Smile extends javax.swing.JFrame { public Leinwand leinwand; //Leinwand extends JPanel {} /** Creates new form Smile */ public Smile() { leinwand = new Leinwand( ); //Ein Leinwandobjekt erzeugen //Den LayoutManager von Hand wählen this.getContentPane().setLayout( new java.awt.BorderLayout()); //Das JPanel auf der Oberfläche anmelden this.getContentPane().add( leinwand, java.awt.BorderLayout.CENTER); //Initialisieren der mit Forte erzeugten Komponenten initComponents(); }... }

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 die Klasse Polygon verbessern public class Polygon { private Punkt[] punkte; public void hinzu( Punkt punkt){ if( punkte == null){ punkte = new Punkt[1]; } else{ Punkt[] neu = new Punkt[ punkte.length + 1]; for( int i = 0; i < punkte.length; i++){ neu[i] = punkte[i]; } punkte = neu; } punkte[ punkte.length – 1] = punkt; }... } Problemeaufgrund des Arrays Probleme aufgrund des Arrays : hoher Zeitaufwand bei dynamischem hinzufügen oder löschen von Punkten

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 die Klasse Polygon verbessern Problemeaufgrund des Arrays Probleme aufgrund des Arrays: hoher Zeitaufwand bei dynamischem hinzufügen oder löschen von Punkten besser für diese Aufgaben besser für diese Aufgaben : Listen verwenden (  Diskrete Mathe): -entweder selbst schreiben ( siehe Vorlesung 11) -oder vorgefertigte Klassen nutzen (z.B. java.util.LinkedList oder javax.swing.DefaultListModel)

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 javax.swing.DefaultListModel Ablegen von Objekten in Listen import javax.swing.DefaultListModel; public class Polygon { private DefaultListModel punkte; public void hinzu( Punkt punkt){ if( punkte == null){ punkte = new DefaultListModel(); } punkte.addElement( punkt); }... } public void addElement(Object object){... } ist Methode der Klasse DefaultListModel, mit ihr kann ein Objekt am Ende der Liste hinzugefügt werden. Wichtig : ALLE Klassen sind von Object abgeleitet !

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 javax.swing.DefaultListModel durchlaufen einer Liste import javax.swing.DefaultListModel; import java.util.Enumeration public class Polygon { private DefaultListModel punkte; public void ausgabe(){ Enumeration laeufer = punkte.elements(); while( laeufer.hasMoreElements()){ ((Punkt) laeufer.nextElement()).ausgeben(); }... } // Zugriff öffnen // solange noch nicht alle Objekte abgefragt wurden // ein Objekt abfragen und behandeln

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 eigene Grafikobjekte java.awt.Rectangle public class Punkt extends Point { } public class Ellipse { }public class Rechteck extends Rectangle { } sollen alle eine Methode public void zeichen_auf( java.awt.Graphics2D g2d){... } haben... java.awt.Point

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 eine eigene Grafikobjektschnittstelle public abstract class GrafikObjekt { public abstract void zeichnen_auf( java.awt.Graphics2D g2d); } müsste mittels extends eingebunden werden. Es ist aber nur eine Oberklasse je Klasse erlaubt => java.awt.Rectangle public class Punkt extends Point { } public class Ellipse { }public class Rechteck extends Rectangle { } java.awt.Point

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 public class Punkt extends Point implements GrafikObjekt { } public class Ellipse implements GrafikObjekt { } public class Rechteck extends Rectangle implements GrafikObjekt { } Lösung : eine eigene Grafikobjektschnittstelle public interface GrafikObjekt { public void zeichnen_auf( java.awt.Graphics2D g2d); } eine Klasse kann zusätzlich zum erweitern der Oberklasse beliebig viele Interfaces implementieren ! java.awt.Rectangle java.awt.Point

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 das Interface an sich public interface Interfacename { public void methodenname( parameter);... } Syntax : Ein Interface darf nur : abstrakte Methoden und statische Attribute enthalten ! public interface GrafikObjekt { public void zeichnen_auf( java.awt.Graphics2D g2d);... } Beispiel : Ein Interface kann nicht : instanziiert werden ! das Schlüsselwort abstract wird nicht benötigt ! jedes Interface hat eine eigene Interfacename.java - Datei!

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 ein Interface erweitern public interface Interfacename extends Interface_1 (, Interface_2...){ public void methodenname( parameter);... } Syntax : Ein Interface darf : beliebig viele Interfaces als Oberklasse haben ! public interface FarbObjekt extends GraphikObjekt { public void farbe_aendern( java.awt.Color color);... } Beispiel :

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 ein Interface implementieren public class Klassenname implements Interface_1 (, Interface_2...){... } Syntax : Eine Klasse die ein Interface implementiert muss : abstrakt sein oder alle Methoden des Interfaces implementieren public class Kreis implements GrafikObjekt { public void zeichen_auf( java.awt.Graphics2D g2d){ g2d.drawOval( this.x, this.y, this.radius, this.radius); }... } Beispiel :

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 eigene Grafikobjekte darstellen durchlaufen einer Liste import javax.swing.*; import java.util.Enumeration; public class Leinwand extends JPanel { public DefaultListModel grafik_objekte; public void paintComponent( java.awt.Graphics g){ super.paintComponent( g); java.awt.Graphics2D g2d = (java.awt.Graphics2D) g; Enumeration laeufer = grafik_objekte.elements(); while(laeufer.hasMoreElements()){ GrafikObjekt go = (GrafikObjekt) laeufer.nextElement() go.zeichen_auf( g2d); }

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 Grafikobjekte auf Mausklick

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 Grafikobjekte auf Mausklick import javax.swing.*; import java.util.Enumeration; public class Leinwand extends JPanel { public Smile parent; public DefaultListModel grafik_objekte; private void formMouseClicked(java.awt.event.MouseEvent evt) { // Add your handling code here: grafik_objekte.addElement( new Kreis( evt.getX(), evt.getY(), 10)); parent.repaint(), }... }

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 Die Klasse Kreis public class Kreis implements GraphikObjekt { public doubel radius, x, y; public Kreis( double x, double y, double radius) { this.x = x; this.y = y; this.radius = radius; } public void zeichen_auf(java.awt.Graphics2D g2d) { g2d.drawOval(x, y, radius, radius); }

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 javax.swing.JToolBar ist automatisch mit BoxLayout ausgestattet kann im laufenden Programm neu platziert werden

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 javax.swing.JToggleButton hat zwei Zustände : ausgewählt und nicht ausgewählt Zustand kann mit der Methode public boolean isSelected() abgefragt werden Zustand wird beim Anklicken der Komponente gewechselt drücken kann als Event mit hinzugefügt werden (bei Forte mittels Actions  ActionEvent  actionPerformed)

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 erzeugen von Kreisen an- und abschalten (erster Teil) import javax.swing.*; public class Smile extends JFrame { public boolean kreise_erzeugen() { return( jToggleButton1.isSelected()); }... private JToggleButton jToggleButton1; }

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 erzeugen von Kreisen an- und abschalten (zweiter Teil) import javax.swing.*; import java.util.Enumeration; public class Leinwand extends JPanel { public Smile parent; public DefaultListModel grafik_objekte; private void formMouseClicked(java.awt.event.MouseEvent evt) { // Add your handling code here: if( parent.kreise_erzeugen() == true) grafik_objekte.addElement( new Kreis( evt.getX(), evt.getY(), 10); parent.repaint(); }... } Leinwand besitzt folgenden Konstruktor : public Leinwand( Smile parent) { this.parent = parent; grafik_objekte = new DefaultListModel(); }

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 Übungsaufgabe Baut ein Malprogramm, das einem Menü, eine Toolbar mit einem ToggleButton und einer Leinwand besteht. Die Klasse Leinwand soll von JPanel abgeleitet sein und die Methode paintComponent( java.awt.Graphics g){...} überschreiben. Beim Start des Malprogramms soll auf der Leinwand ein Kreis gemalt werden. Wenn dieses funktioniert versucht mal einen Smily, ein Gesicht oder etwas anderes. Ihr könnt auch probieren, die Ausgabe mit dem ToggleButton an und ab zu schalten...

IKG Dörschlag, Plümer, Gröger „Einführung in die Programmierung mit Java“ WS03/04 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 Hausaufgabe Versucht, das Malprogramm aus der Vorlesung zu schreiben. Hierfür könnt ihr viele Klassen aus der Übung nutzen. Neu : Die Schnittstelle GrafikObjekt und die Klassen die diese implementieren (z.B. Kreis), sowie die Benutzung von DefaultListModel um die GrafikObjekte zu speichern, die gleichzeitig mit einer Änderung der paintComponent() Methode der Leinwand verbunden ist !