Grundlagen der Programmierung 2 SS 2005 - Aufgabenblatt 3
Ausgabe: 29.04.05
Aufgabe 9 (Dialogfenster)
Die bereits in Aufgabe 7 entworfene Benutzungsoberfläche eines einfachen
Editors soll nun um ein Dialogfenster erweitert werden, das dem Anwender
beim Schließen des Hauptfensters fragt ob das Programm wirklich beendet
werden soll. Der dazu passende Quellcode befindet sich in
SimpleEditor.java
. Die Bilder für die Buttons werden
im Verzeichnis aufg9/images
bereitgestellt. Diese müssen im
gleichen Verzeichnis wie die SimpleEditor.java bzw.
SimpleEditor.class Datei gespeichert werden.
Die Implementierung kann in ähnlicher Form zu dem in Folie 94
beschriebenen "Virus Warning" Dialogfenster geschehen. Eine andere Möglichkeit
besteht darin die Swing-Komponente JOptionPane
zu verwenden.
Beachten Sie bei beiden Varianten, dass die DefaultCloseOperation
auf DO_NOTHING_ON_CLOSE
gesetzt wird.
Aufgabe 10 (SimpleEditor: Verwendung von Listener)
Da der SimpleEditor bis jetzt nur aus der eigentlichen Benutzungsoberfläche besteht, aber die einzelnen Komponenten noch keine Funktionalität besitzen, soll dieser nun schrittweise vervollständigt werden. Überlegen Sie sich im Vorfeld, welche Listener für die Benutzungsoberfläche benötigt werden? Beim Aufruf einer beliebigen Funktion soll immer eine passende Mitteilung in der Statuszeile ausgegeben werden (z.B. "Der markierte Bereich wurde in die Zwischenablage kopiert.").
- a)
-
Zuerst soll die Funktionalität für Copy, Cut, Paste und Delete implementiert
werden. Dabei führen die einzelnen Buttons folgende Operationen aus:
Copy (kopieren in die Zwischenablage)
Cut (kopieren in die Zwischenablage und löschen aus dem
JTextArea
)Paste (einfügen in den ausgewähltem Bereich oder an die aktuelle Cursor Position)
Del (löschen aus dem
JTextArea
ohne die Auswahl in die Zwischenablage zu kopieren)
Welche Methoden aus der Klasse
JTextArea
bzw. JTextComponent werden benötigt? Implementieren sie die Funktionalität. - b)
-
Im zweiten Schritt soll nun der SimpleEditor um folgende Dateioperationen erweitert werden:
New (erzeugen eines leeren Dokumentes)
Open (laden einer Datei und anzeigen des Dokumentes im
JTextArea
)Save (speichern des Dokumentes aus dem
JTextArea
in eine Datei)
Welche Methoden von
JTextArea
werden nun benötigt? Implementieren sie die Funktionalität.Hinweis: Es gibt eine Swing-Komponente namens
JFileChooser
, die breits sämtliche Funktionalität zum Navigieren in der Verzeichnisstruktur und zur Auswahl einer Datei zur Verfügung stellt. Welche Methoden vonJFileChooser
werden benötigt? - c)
-
Mittels einer
Welche Methoden vonJComboBox
und dem angrenzendenJTextField
soll nun die Schriftart und -größe des gesamten Dokumentes vom Benutzer verändert werden können.JTextArea
werden nun benötigt?Hinweis: Die Einträge in der
JComboBox
sind bereits korrekte Schriftnamen und können direkt für das Erzeugen von Font-Objekten übernommen werden.
Aufgabe 11 (Listener zuordnen)
Entwerfen Sie ein Programm, das ein Hauptfenster mit einem Textfeld und einem Button erzeugt. Immer wenn man den Button betätigt, soll ein neues Fenster erzeugt und angezeigt werden. Es soll den Titel "Fenster X" haben. Dabei nummeriert X die Fenster fortlaufend von 0 an durch. Weiteren Inhalt brauchen diese Fenster nicht zu haben.
Wird eines der so erzeugten Fenster geschlossen, dann soll im Textfeld des Hauptfensters der Text "Fenster X geschlossen" erscheinen. Verwenden Sie für den EventListener, der die Fenster schließt, immer dasselbe Objekt.
Das folgende Bild zeigt eine Situtation, in der neben dem Hauptfenster zwei neue Fenster erzeugt wurden.

Aufgabe 12 (Zusammenhang der Objekte)
Zeichnen Sie ein Bild mit allen Objekten, die bei der Ausführung Ihres Programmes aus Aufgabe 11 vorkommen. Stellen Sie die Situation dar, in der (wie in obigem Bild) neben dem Hauptfenster noch 2 neue Fenster erzeugt wurden.
Verwenden Sie für Ihre Grafiken die informelle Notation aus der Vorlesung. Das folgende Beispiel zeigt in dieser Notation je ein Objekt der Klassen A, B und C. Das A-Objekt hat zwei Objektvariablen, nr und ref. ref enthält eine Referenz auf das B-Objekt. Außerdem ist das A-Objekt in das C-Objekt eingebettet. Bei Objekten zu anonymen Klassen geben Sie den Namen der Klasse oder des Interface an, aus der/dem die anonyme Klasse erzeugt wurde.

Geben Sie in Ihrer Objekt-Grafik nur die Variablen an, die für die Bezüge zwischen den Objekten und für die Unterscheidung der Fenster wichtig sind.
Generiert mit Camelot | Probleme mit Camelot? | Geändert am: 05.02.2009