Universität Paderborn - Home Universität Paderborn
Die Universität der Informationsgesellschaft

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.

Aufgabe9_Bild.png

(Hier ist die Lösung zu Aufgabe 9)

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 von JFileChooser werden benötigt?

c)

Mittels einer JComboBox und dem angrenzenden JTextField soll nun die Schriftart und -größe des gesamten Dokumentes vom Benutzer verändert werden können.

Welche Methoden von 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.

(Hier ist die Lösung zu Aufgabe 10)

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.

Aufgabe11_Bild1.gif

(Hier ist die Lösung zu Aufgabe 11)

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.

Aufgabe11_Bild2.gif

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.

(Hier ist die Lösung zu Aufgabe 12)

Generiert mit Camelot | Probleme mit Camelot? | Geändert am: 05.02.2009