UNDO & SELECT Vortrag : Martin Hiersche 21.12.1999.

Slides:



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

Ein Beispiel in Java.
Kapselung , toString , equals , Java API
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
Ausnahmen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Listen Richard Göbel.
Java: Grundlagen der Objektorientierung
Wie überwacht man Objekte im "Alltag" ?. Indem man "Wanzen" an diese anbringt.
Ein Beispiel in Java.
Objekte werden als Adressen (Referenzen) übergeben. Dies führt manchmal zu unerwarteten Ergebnissen...
WHILE - Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
Exceptions. import java.sql.*; public class MyException{ boolean b; Statement stat; public MyException(){ b = stat.execute("xyz"); } Beim Übersetzen dieses.
DO...WHILE Anweisung.
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 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
AWT – Detailbetrachtung Java 3D – Seminar im Wintersemester 2002/2003 Christian Schneider.
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.
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Programmieren mit JAVA
PRJ 2007/1 Stefan Dissmann Motivation Problem: Benutztes Objekt kennt den Kontext seiner Nutzung nicht. Daher kann es in besonderen Situationen keine Entscheidung.
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
Command Pattern Karola Schäuble,
1DVG3 - Eventbehandlung Eventbehandlung. DVG3 - Eventbehandlung 2 Events Events sind externe Ereignisse, die parallel zum normalen Programmablauf auftreten.
1DVG3 - Paint Teil 2 Paint Teil2. DVG3 - Paint Teil 2 2 Weitere Entwicklungen Hinzufügen verschiedener Werkzeuge: Punkte Linien Rechtecke, Rechtecke mit.
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Einführung in die Programmierung Datensammlung
© 2004 Pohlig - Taulien Swing Ereignissteuerung. © 2004 Pohlig - Taulien GK Informatik mit Java 2 Auf Button-Klick reagieren.
Sitzung 3: Klassen, Objekte, Arrays und Kontrollstrukturen
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Grundkonzepte Java - Klassendefinition
Java programmieren mit JavaKara
Guten Nachmittag!.
Wir haben gesehen Das Gerüst ist bei JavaKara fix vorgegeben
Übungen zum Vortrag „Backtracking mit Heuristiken“
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Vom Umgang mit Daten. public void myProgram() { int[] saeulenWerte = new int[world.getSizeX()]; for (int i = 0; i < saeulenWerte.length; i++) { saeulenWerte[i]
Aufruf einer Methode eines Objektes vom Typ „Bruch“
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
Java-AG Benutzeroberflächen Juni 2001 Michael Haas.
CuP - Java Neunte Vorlesung Entspricht Kapitel 4.2 und 5 des Skriptums
CuP - Java Achzehnte (und LETZTE. ) Vorlesung : 1
Starten der Entwicklungsumgebung (IDE)
Learning By Doing Ausnahmebehandlung Exceptions (Ausnahmebehandlung) Typische Fehlverhalten zur Laufzeit: s. Buch S. 287ff -Verwendung von null-Objekten.
Programmiervorkurs WS 2014/15 Schleifen
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
3. Beschreibung von Abläufen durch Algorithmen 3.4 Zufall
Java-Kurs Übung Benutzeroberflächen und Graphik
Java-Kurs Übung Benutzeroberflächen und Graphik Frames (Fenster)
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Programmierkurs JavaUE 4 Anweisungen und ProgrammeDietrich BolesSeite 1 Programmierkurs Java Dr. Dietrich Boles Teil Imperative Programmierung Unterrichtseinheit.
Tabellen im Word Als erstes müsst ihr das Microsoft Word starten.
Controller Werkstatt updaten Werkstatt ws = werkstattarray.get(werkstattId); ws.setName(name); ws.setAnsprechpartner(ansprechpartner); ws.setTelefonnummer(telefonnummer);
Die Struktur einer Java-Klasse
 Präsentation transkript:

UNDO & SELECT Vortrag : Martin Hiersche

DVG3 - Mh0012 UNDO

DVG3 - Mh0013 Das Problem 4 Bei dem Zeichenprogramm Paint 31 hatten wir die Möglichkeit zu Zeichnen, Schriften hinzuzufügen usw. 4 Das Problem war bis dahin, wenn man sich geirrt hatte müßte man das ganze Bild neu zeichnen und bearbeiten. 4 Die einfachste Lösung wäre, wenn man die letzte Aktion rückgängig machen könnte und somit das bis dahin gezeichnete nicht unbrauchbar wird bzw das man das weiter verwenden kann.

DVG3 - Mh0014 Die Idee 4.. besteht darin das Zeichenprogramm so zu modifizieren, daß man Fehler oder besser die letzten Aktionen die man ausgeführt hat, rückgängig macht und somit das bis dahin gezeichnete Bild noch weiterhin zu Verfügung steht. 4 Weiterhin sollte das Rückgängig machen nicht nur von der letzten Aktion sein, sondern es sollte auch die davor ausgeführten Aktionen genau so behandelt werden können. Damit man Schritt für Schritt die Elemente die dem Bild hinzugefügt wurden löschen kann.

DVG3 - Mh0015 Die Lösung 4 Als erstes definiert man in der Class Pain.java in der Methode private void createStatus(MenuBar menu) { Menu optionsMenu = new Menu("Options"); menu.add(optionsMenu);... optionsMenu.add(new MenuItem("undo", new MenuShortcut('u'))); 4 Den Knopf / Button undo wird in der Menubar unter der Rubrik Option hizugefügt. Nun kann man die Option undo auch mit der tastenkombination Strg + u aufrufen. 4 Weiterhin soll der Button auch als Arbeitswerkzeug sichtbar sein. 4 Deswegen wird der Knopf auf der Benutzeroberfläche hinausgezogen.

DVG3 - Mh Die Anweisung sieht wie folgt aus 4 GraphicButton undoButton = new GraphicButton(Toolkit.getDefaultToolkit().getImage ("images/undo.gif"),"undo"); statusPanel.add(undoButton,gbc); undoButton.addActionListener(this); Nachdem man den Knopf definiert hat muß man auch das ActionEvent definieren.

DVG3 - Mh In der Methode 4 public void actionPerformed(ActionEvent e) {... Muß folgendes eingefügt werden: 4 4 case 'u':graph.delLast(); offGraphics.setColor(Color.white); offGraphics.fillRect(0,0,1000,1000); offGraphics.setColor(Color.black); graph.paint(offGraphics); gPanel.paint(onGraphics); break;

DVG3 - Mh Weiterhin muß man in der Class Paint.graph die Methode delLast einfügen : public void delLast() { list.removeLast(); } 4 removeLast löscht den letzten Eintrag in der Liste. Anschließend wird das Bild zurückgegeben und neu gezeichnet.

DVG3 - Mh0019 Ausnahmen 4 Um die Aktion fehlerfrei ausführen zu können und vor Leuten zu schützen, die gerne auch was eliminieren wollen was nicht mehr vorhanden ist, muß man die Ausnahmen abfangen. 4 Im folgenden ist es nichts weiter als das man einen try-catch - Block um die Methode definiert. 4 case 'u': try {......} catch(java.util.NoSuchElementException nsee) { } 4 Somit ist die Methode undo in das Zeichenprogramm Paint 31 mit eingebracht.

DVG3 - Mh00110 SELECT

DVG3 - Mh00111 Das Problem 4 Bis jetzt kann man schon die letzte Aktion rückgängig machen. 4 In dem Programm kann man noch keine direkte Auswahl von bestimmten Objekten vornehmen. 4 Man möchte mit der Maus ein bestimmtes Objekt aussuchen und dann das Ausgesuchte weiter bearbeiten. 4 Was soll die Aktion SELECT überhaupt bewirken oder was soll überhaupt geschehen?

DVG3 - Mh00112 Die Lösung 4 Als erstes definiert man einen Knopf select in Paint GraphicButton selectButton = new GraphicButton(Toolkit.getDefault Toolkit().getImage("images/select.gif"),"select"); statusPanel.add(selectButton,gbc); selectButton.addActionListener(this); 4 Weiterhin muß beachtet werden das man im Selectiermodus die Befehle anders aufwertet. 4 Deshalb definiert man eine boolean Variable als Schalter (später) private boolean selectMode = false; In der Methode wird die Zeile hinzugefügt. private void createStatus(MenuBar menu) optionsMenu.add(new MenuItem("select", new MenuShortcut('x')));

DVG3 - Mh00113 In der Methode public void actionPerformed(ActionEvent e) muß man jetzt folgendes beachten. 4 Man hat zum Anfang den Selectmodus auf false gesetzt. Mit der Anweisung case 'x':selectMode=!selectMode;break ; wird der Selectmodus auf true oder auf false gesetzt. 4 Aber warum ? 4 Um später die ausgesuchten Objekte weiter zu bearbeiten, muß man im Selectmodus die weiteren Aktionen unterscheiden Nun muß man bei den MouseEvents auch den gewünschten Modus einschalten oder ausschalten.Dieses geschieht mit folgender Anweisung : public void mouseEntered(MouseEvent e) { if (!selectMode) actualObject.mouseEntered(e); }

DVG3 - Mh Bei der Methode muß man folgende Anweisungen hinzufügen. public void mouseClicked(MouseEvent e) { if(selectMode) { PaintableObjectf=graph.findAt(e.getX(),e.getY()); System.out.println("found = "+f); } else actualObject.mouseClicked(e); } 4 Im Selectmodus kann man die einzelnen Objekte nur unterscheiden durch ihre X,Y-Koordinaten.

DVG3 - Mh Weiterhin muß in der Class PaintGraph folgende Methode mit eingefügt werden. 4 public PaintableObject findAt(int x, int y) { PaintableObject le; for (int i=0;i<list.size();i++ ) { le = (PaintableObject)(list.get(i)); if ( le.contains(x,y) ) return le; } return null; } Diese Methode durchsucht die Liste nach den Objekten mit den Koordinaten x,y die durch die Methode mouseClicked übergeben wurden. Wenn dann Objekte gefunden wurden hat man die Möglichkeit an dieser Stelle den Befehl auszuweiten bzw. diese Objekte zu bearbeiten.

DVG3 - Mh Nun kann man die einzelnen Objekte in unseren Zeichenpro- gramm suchen und genau zuweisen. 4 Dazu muß man die einzelnen Objekte z.B. PaintRect um definieren, da die Objekte in ein Graphic2D Objekt umgewandelt werden müssen. 4 z.B. in der Class PaintRect muß man die folgende Importanweisung hinzufügen. import java.awt.geom.Rectangle2D; 4 zusätzlich muß noch die Methode 4 public boolean contains(int x,int y) {Rectangle2D.Double rec= new Rectangle2D.Double(Math.min(x0,x1), Math.min(y0,y1),Math.abs(x0-x1),Math.abs(y0-y1)); return rec.contains(x,y); }

DVG3 - Mh Bei den einzelnen Objekten handelt es sich um SHAPE - Graphiken. 4 Was ist SHAPE ? 4 Das Shape interface wurde definiert für die Darstellung einiger geometrischer Objekte. 4 Bei Shape Objekten wird unterschieden ob die Bildpunkte in einem Objekt enthalten sind oder nicht. 4 Dadurch können Shape Objekt genauer voneinander unterschieden werden. 4 Der Nachteil von Shape Objekten ist, daß die Objekte ausgefüllt werden was für den Betrachter nicht zusehen ist. Dadurch können Objekte die über einander liegen nicht unterschieden werden, da als erstes Objekt das untere des gezeichneten Bildes angesprochen wird.