Blatt10_WS11 - Informatik

Werbung
WS 2011/12
Fakultät Angewandte Informatik
Programmierung verteilter Systeme
16.01.2011
Prof. Dr. Bernhard Bauer
Übungen zur Vorlesung Informatik II, Blatt 10
Abgabe: Montag, 23.01.2012, 12.00 Uhr, Informatik II - Briefkasten und Programme zusätzlich per
Mail an den Tutor, bitte Namen und Matrikelnummer angeben.
Aufgabe 35 * (Mausereignisse, Klausuraufgabe WS 10/11, 15 Punkte)
Implementieren Sie ein schließbares Fenster mit einer Zeichenfläche und zwei nicht editierbaren
Textfeldern, die sich nebeneinanderliegend unterhalb der Zeichenfläche befinden.
Bewegt man die Maus über die Zeichenfläche (Maustaste nicht gedrückt), so soll in den Textfeldern
immer die aktuelle Mausposition innerhalb der Zeichenfläche angezeigt werden (ein Textfeld für die XKoordinate, das andere Textfeld für die Y-Koordinate).
Aufgabe 36 + 37 ** (Zeichnen mit Vorschau)
Es soll ein Programm erstellt werden, mit dem man Polygonzüge und Freihandlinien in eine
Zeichenfläche zeichnen kann.
Ein Polygonzug (Klasse Polygon, bereits teilweise vorgegeben) ist dabei durch eine Liste von
Punkten (Klasse Point, bereits vorgegeben), die die Eckpunkte des Polygonzugs angeben, gegeben.
Das bedeutet, ein Polygon wird gezeichnet, indem zwischen zwei aufeinanderfolgenden Punkten
dieser Liste jeweils Linien gezogen werden.
Ein Polygon soll durch den Benutzer wie folgt gezeichnet werden können:
i. Durch Klick auf eine Schaltfläche soll festgelegt werden, dass als nächstes ein Polygon
gezeichnet wird
ii. Durch einen Linksmausklick soll daraufhin der Startpunkt des Polygons gesetzt werden.
iii. Mit jedem weiteren Rechtsmausklick werden aufeinanderfolgende Zwischenpunkte des
Polygons gesetzt.
iv. Mit dem zweiten Linksmausklick wird der Endpunkt des Polygons gesetzt.
v. Das Polygon soll bis zum letzten festgelegten Zwischenpunkt sichtbar sein. Vor jedem Klick
(außer dem ersten) soll außerdem eine Vorschau auf die nächste Linie des Polygons zu
sehen sein.
Eine Freihandlinie entsteht durch einen Polygonzug mit sehr nah benachbarten aufeinanderfolgenden
Punkten (jeweils nur wenige Pixel Abstand).
Eine Freihandlinie soll durch den Benutzer wie folgt gezeichnet werden können:
i. Durch Klick auf eine Schaltfläche soll festgelegt werden, dass als nächstes eine Freihandlinie
gezeichnet wird
ii. Mit gedrückter Maustaste soll daraufhin entlang der Mausbewegung eine Freihandlinie
entstehen.
Zur Verwaltung aller gezeichneten Polygonzüge ist außerdem teilweise eine zugehörige
Containerklasse Polygone vorgegeben. Benutzen Sie das Beobachtermuster, um sicherzustellen,
dass immer alle bisher gezeichneten Polygone und Freihandlinien und das aktuell gezeichnete
Polygon bzw. die aktuell gezeichnete Freihandlinie dargestellt werden.
1
Die Implementierung der Zeichenfläche zum Zeichnen von Polygonen war Klausuraufgabe im
WS 08/09 (15 Punkte)
public class Point {
private int x,y;
public Point (int x, int y){
this.x = x;
this.y = y;
}
public int getY(){return y;}
public int getX(){return x;}
}
import java.awt.*;
import java.util.*;
public class Polygon {
private Vector nodes = new Vector();
public Polygon(Point start){ nodes.addElement(start);}
public void addPoint(Point p) { nodes.addElement(p);}
public void removeLastPoint() { nodes.remove(nodes.size()-1);}
public void paint(Graphics g){ //zu ergänzen}
}
import java.util.*;
public class Polygone implements Iterable {
private Vector meinePolygone = new Vector();
private static Polygone uniqueListe = null;
private Polygone(){}
public static Polygone instancePolygone (){
if (uniqueListe == null){ uniqueListe = new Polygone();}
return uniqueListe;
}
public void addPolygon(Polygon p){ meinePolygone.addElement(p);}
public Iterator iterator(){ return meinePolygone.iterator();}
}
Aufgabe 38 *** (Verschieben von Zeichnungen)
Ergänzen Sie das Programm aus Aufgabe 36 + 37, so dass man wie folgt Polygone auswählen und
verschieben kann:
i. Befinden sich die Mausposition innerhalb des Rechtecks, das durch den am weitesten rechts
liegenden Punkt, dem am weitesten links liegenden Punkt, den am weitesten oben liegenden
Punkt und den am weitesten unten liegenden Punkt des Polygons gebildet wird, so soll das
Polygon in einer anderen Farbe gezeichnet werden und das Rechteck angezeigt werden
(siehe Screenshot). Ein solches Polygon gilt als ausgewählt. Das kann natürlich auch für
mehrere Polygone gleichzeitig der Fall sein.
ii. Mit gedrückter Maustaste sollen daraufhin alle ausgewählten Polygone entlang der
Mausbewegung verschoben werden.
2
Herunterladen