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.

Slides:



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

Objektorientierte Programmierung
Imperative Programmierung
der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
Java: Objektorientierte Programmierung
Java2D Richard Göbel.
Java: Dynamische Datentypen
Listen Richard Göbel.
Java: Grundlagen der Objektorientierung
Ein Beispiel in Java.
Konstruktoren.
Sommersemester 2003 Lars Bernard
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 Einführung in die Programmierung mit Java 7. 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 Grafik Julian Drerup.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Listen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
DVG Klassen und Objekte
Einführung in die Programmierung Datensammlung
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Programmierung im Netz und Internet: Einführung in die Programmiersprache Java Teil I 1 Klassen Objekte von.
FH-Hof Java2D - Grundlagen Richard Göbel. FH-Hof Java2D - Funktionen Java2D unterstützt: das Zeichnen von Grafiken die Darstellung von Texten die Darstellung.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 6 SS 2001 Segmentschnitt III.
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
Java-Kurs Übung Benutzeroberflächen und Graphik
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Java-Kurs Übung Benutzeroberflächen und Graphik Frames (Fenster)
Java-Kurs - 3. Übung Hausaufgabe Arrays For-Schleifen.
Java-Kurs Übung Besprechung der Hausaufgabe Listen und Mengen Komplexitäten Iteratoren (Durchlaufen von Listen/Mengen)
Vorlesung Einführendes Beispiel-
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
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 8. Vorlesung WS 2002/2003.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 11. Vorlesung WS 2002/2003.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 12. Vorlesung WS 2002/2003.
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs Übung Benutzeroberflächen und Graphik Besprechung der Hausaufgabe Applets Interaktive Eingabe und Darstellung mehrerer Polygonen.
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
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. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 13. 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.
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.
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. 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. Thomas H. Kolbe Einführung in die Programmierung mit Java 7. Vorlesung WS 2002/2003.
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. 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 Einführung in die Programmierung mit Java 10. Vorlesung WS 2002/2003.
Java-Kurs Übung Benutzeroberflächen und Graphik Besprechung der Hausaufgabe Applets Interaktive Eingabe und Darstellung mehrerer Polygonen.
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.
Diskrete Mathe Diskrete Mathematik I Listen Vorlesung 4.
Java Programme nur ein bisschen objektorientiert.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Java-Kurs Übung Grafik in Java - das Abstract Windowing Toolkit
Einführung in die Programmierung mit Java
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
Einführung in die Programmierung mit Java
 Präsentation transkript:

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 14. Vorlesung WS 2004/2005

Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/052 Übersicht Benutzeroberflächen –Menüs –Einfache Graphik –Dialog zur Farbauswahl –Listen –Interaktive Graphik

Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/053 Menüs JMenueBar JMenue JMenueItem

Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/054 Menüs: Schritt 1 2. Klick1. Klick

Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/055 Menüs: Schritt 2 2. Klick1. Klick

Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/056 Menüs: Schritt 3 2. Klick1. Klick

Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/057 Menüs: Zwischenergebnis

Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/058 Menüs: Schritt 4 - Beschriftung hinzufügen

Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/059 Menüs: Schritt 5 - Methode hinzufügen

Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/0510 Menüs: Methode, die auf Klick reagiert

Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/0511 Graphik: Methode "paint" Graphik wird erzeugt durch Überladen der Methode "paint" von "JFrame" (Polymorphismus) "paint" wird automatisch bei jedem Neuaufbau des Bildschirms aufgerufen "paint" muss "paint" der Oberklasse aufrufen "paint" erhält als Parameter ein Objekt der Klasse "Graphics" Zeichnen: Aufruf von Methoden für "Graphics"-Objekt Paket "java.awt.*" muss importiert werden

Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/0512 Zeichnen in Methode "paint" von JFrame Beispiel: public void paint(Graphics g) { super.paint(g); g.setColor(Color.cyan); g.drawLine(30,40,100,80); g.drawLine(100,80,50,190); }

Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/0513 Methoden der Klasse „Graphics“ drawPolygon(int[] xPoints, int[] yPoints, int nPoints) drawString(String str, int x, int y) drawPolyline(int[] xPoints, int[] yPoints, int nPoints) drawOval(int x, int y, int width, int height) drawRect(int x, int y, int width, int height) fillRect(int x, int y, int width, int height) setColor(Color c), z.B. setColor(Color.cyan) weitere Methoden in JavaDoc

Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/0514 vorher: Größe des JFrame ändern public MeinFrame() { initComponents (); pack (); setSize(300,300); }

Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/0515 Übungsaufgabe I Erzeugt ein JFrame und zeichnet darin die französische Fahne

Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/0516 Übungsaufgabe II Erzeugt ein JFrame und zeichnet darin die ein buntes Segelboot mit Segeln und Bullaugen

Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/0517 Alternative: Graphics2D statt Graphics Bessere Behandlung der Geometrie, von Koordinatentransformationen, Farben und Texten Unterklasse Graphics2D statt Graphics in paint (Typumwandlung erforderlich) Graphics2D hat Methode draw(Shape s) –statt Methoden drawString, drawPolygon, drawPolyline bei Graphics Graphics2D hat Methode fill(Shape s) Shapes können sein: –Polygon, RectangularShape, Rectangle, Area, Line2D, GeneralPath, QuadCurve2D, CubicCurve2D, Ellipse2D,... Shapes sind eigene Objekte Paket: java.awt.geom

Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/0518 Beispiel public void paint(Graphics g) { //Typkonvertierung zu Graphics2D Graphics2D g2d = (Graphics2D) g; //Erzeugung der Shapes Point2D p1 = new Point2D.Double(50,30); Point2D p2 = new Point2D.Double(70,80); Point2D p3 = new Point2D.Double(240,180); Line2D l1 = new Line2D.Double(p1,p2); Line2D l2 = new Line2D.Double(p2,p3); //Zeichnen g2d.setColor(Color.cyan); g2d.draw(l1); g2d.draw(l2); }

Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/0519 Klasse „GeneralPath“ für Polylinien bzw. Polygone „Unterklasse“ von Shape Methoden: –GeneralPath(): Konstruktor –append(Shape s, boolean connect): Fügt s an GeneralPath an –lineTo(float x, float y): Fügt Punkt (x,y) an –closePath(): schliesst Polygon

Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/0520 Beispiel public void paint(Graphics g) { Graphics2D g2d = (Graphics2D) g; Point2D p1 = new Point2D.Double(50,30); Point2D p2 = new Point2D.Double(70,80); Line2D l1 = new Line2D.Double(p1,p2); GeneralPath gp = new GeneralPath(); gp.append(l1,true); gp.lineTo(67,99); gp.closePath(); g2d.setColor(Color.cyan); g2d.draw(gp); g2d.setColor(Color.red); g2d.fill(gp); }

Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/0521 Interaktiv Farben setzen JColorChooser: Vordefinierter Dialog für Farbauswahl Aufruf: Color c = JColorChooser.showDialog (Parent, "Titel", Color); –Parent: Referenz auf JFrame, aus dem ColorChooser aufgerufen wird (eigentlich this-Zeiger) –Titel: Beschriftung auf Leiste des Dialogs –Color: voreingestellte Farbe, z.B. Color.blue Liefert nach Klicken von OK die ausgewählte Farbe zurück Parent: bei Aufruf aus Event-Handler: this-Zeiger nicht zugreifbar (da in eingebetteter Klasse) Lösung: Definition eines Attributs des JFrames, dem im Konstruktor this zugewiesen wird.

Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/0522 JColorChooser

Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/0523 Menüs: Methode, die auf Klick reagiert

Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/0524 Explizites Auslösen von "paint" "paint" wird automatisch bei Neuaufbau des Fensters aufgerufen (z.B. nach Verdeckung, nach Maximieren,.....) explizit kann "paint" durch Aufruf von repaint(); ausgelöst werden (Methode von JFrame) –z.B. wenn Farbeinstellungen geändert werden, oder neue Objekte gezeichnet werden sollen

Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/0525 Hausaufgabe Erzeugt ein JFrame, in dem interaktiv (über das Menü) alle Fahnen (alle die mit 3 senkrechten oder 3 waagerechten Balken) gezeichnet werden können. Interaktion soll über Menüs erfolgen.

Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/0526 Exkurs: Listen LinkedList: Datentyp für Liste (vgl. Vorlesung "Diskrete Mathe") Anzahl der Elemente beliebig erweiterbar (im Gegensatz zu Arrays) Elementtyp : Klasse Object java.util.LinkedList muss importiert werden Methoden von LinkedList: boolean add(Object o) void add(int index, Object element) Object get(int index) //Index beginnt bei 0 void clear() int size() weitere Methoden in JavaDoc

Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/0527 Exkurs: Listen - Beispiel import java.util.LinkedList;..... LinkedList l = new LinkedList(); //Listenobj. erzeugen Person p = new Person(); Professor pr = new Professor(); Assistent a = new Assistent(); l.add(p); l.add(pr); l.add(a); Objekt o = l.get(1); //o referenziert den Prof. Professor pp = (Professor) o; //Typkonvertierung System.out.println(l.size()); //gibt 3 aus l.clear(); System.out.println(l.size()); //gibt 0 aus

Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/0528 Exkurs: Listen - Iteratoren dienen zum sequentiellen Durchlaufen durch eine Liste Iteratoren sind eigene Objekte, die mit der Liste eng verbunden sind Iterator-Objekt wird durch Aufruf der Methode iterator() für Liste geliefert Methoden der Klasse Iterator: boolean hasNext(): wahr, wenn Durchlauf noch nicht fertig Object next(): liefert nächstes Listenelement, setzt Zeiger ein Element weiter Iteratoren führen intern einen Zeiger auf Listenelemente mit Iterator ist verbraucht, wenn Ende der Liste erreicht Eine Liste kann beliebig viele Iteratoren haben

Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/0529 Exkurs: Iteratoren - Beispiel import java.util.LinkedList; LinkedList ll = new LinkedList(); // Liste mit Werten füllen: ll.add(new Person()); ll.add(new Professor()); //Liste Durchlaufen: Iterator it = ll.iterator(); while(it.hasNext()) { Object o = it.next(); System.out.println(o); }

Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/0530 Interaktives Zeichnen in „paint“ bisher: Zeichnen fest in „paint“ programmiert Interaktives Zeichnen: 3 Schritte 1.Attribut des JFrame der Klasse LinkedList (dient zur Aufnahme der zu zeichnenden Shapes) 2.in „paint“ wird LinkedList durchlaufen und für jedes Shape darin die Methode „draw“ aufgerufen 3.Die LinkedList wird mit Shapes gefüllt in z.B. Methode, die auf Mausklicks in JFrame reagiert –Aufruf der Methode repaint() des JFrame löst Aufruf von paint() aus –Klickkoordinaten: getX()/getY() des MouseEvents

Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/0531 Interaktives Zeichnen - Beispiel I/II public class MeinFenster extends JFrame { LinkedList ll; public MeinFenster() { super(); ll = new LinkedList();...} public void paint(Graphics g){ super.paint(g); Graphics2D g2d = (Graphics2D) g; Iterator it = ll.iterator(); while(it.hasNext()) { Object o = it.next(); Shape s = (Shape) o; g2d.fill(s);}

Gröger, Dörschlag, Plümer - Einführung in Java - 1. Semester - WS 04/0532 Interaktives Zeichnen - Beispiel II/II public void mouseClicked(java.awt.event.MouseEvent e) { ll.add(new Rectangle(e.getX(), e.getY(),5,8)); repaint(); }