AWT Übungen
Advanced   Java   Services
AWT
Prev Next Exercise up Home
Übungen

    Frame und Window

  1. Vollziehen Sie die vier verschiedenen Fensteransätze nach, die im Abschnitt Frame vorgestellt werden und setzen Sie die Klasse WindowCloser zum Schließen der Fenster ein.

  2. Verwenden Sie den "has a" Ansatz um mehrere Fenster zu öffnen. Verwenden Sie setTitle() und geben Sie den Fenstern verschiedene Titel und Farben und Größen. Verwenden sie setBounds() an Stelle von setSize() und setLocation().

  3. Wie 2), aber legen Sie ein Array von Frames an geben Sie den Fenstern zufällige Farben.

  4. Legen Sie ein Fensterobjekt an ("is a"-Ansatz) und geben Sie ihm mit setSize() eine Größe. Verwenden Sie die Methode setExtendedState(int state) und stellen sie fest, welche Fensterzustände sie mit dieser Methode erzeugen können. Wechseln Sie in einer Schleife alle 2 Sekunden durch die Zustände NORMAL, ICONIFIED und MAXIMIZED_BOTH. des Fensters

  5. Legen Sie mit einem "has a" Ansatz mehrere Fenster an und holen Sie in einer Endlosschleife alle 2 Sekunden ein anderes Fenster mit toFront() in den Vordergrund. Geben Sie dabei diesem Fenster jeweils eine neue zufällige Farbe.

  6. Legen sie ein Fenster an ("is a"-Ansatz). Erstellen sie zu diesem Frame ein Windowobjekt in einer beliebigen Farbe und Größe. Setzen Sie für das Windowobjekt mit der Methode setCursor() den Handcursor. Stellen sie fest wie sich dieses Childfenster im Zusammenhang mit seinem parent, dem Frame verhält.

  7. Legen Sie ein Fenster an ("is a"-Ansatz). Mit der Methode setUndecorated(boolean state) kann man den Titelbalken und den Rahmen eines Frames ausblenden. Ein Frame ähnelt dann einem Windowobjekt. Die Voreinstellung für setUndecorated() ist false. Schalten sie undecorated auf true und erzeugen mit setExtendedState() alle 2 Sekunden einen anderen Größenzustand und schalten sie danach undecorated wieder auf false. Man kann setUndecorated() allerdings nur dann einsetzen, wenn das Fenster nicht im Hauptspeicher gehalten wird. Diese Resourcen werden mit der Methode dispose() freigegeben. Sie müssen also vor setUndecorated() dispose() einsetzen und nach setUndecorated() setVisble().

  8. Wie 7), aber Überschreiben Sie die Methode setUndecorated() so, daß sie bei der Anwendung der überschriebenen Methode die Aufrufe von dispose() und setVisible() nicht mehr extra benötigen.

    Label, Button, Checkbox, Panel

  9. Legen Sie ein Fenster an ("is a"-Ansatz). Geben sie dem Fenster eine beliebige Farbe. Der Datenteil der Klasse enthalte drei Labels. Initialisieren Sie die Labels mit drei unterschiedlichen Texten und den drei möglichen Ausrichtungen. Geben Sie den drei Labels und den drei Texten unterschiedliche Farben (nicht die Farbe des Frames) und nehmen Sie die Labels in den Frame auf.

  10. Wie vorher, aber verwenden Sie zum Initialisieren den Defaultkonstruktor und die Methoden setText() und setAlignment().

  11. Geben Sie einem Label keine eigene Farbe und beobachten den Effekt.

  12. Wie 9). Erweitern Sie aber den Datenteil um ein Panel. Initialisieren Sie das Panel mit dem Defaultkonstruktor. Nehmen Sie die Labels in ein Panel auf setzen dieses Panel einmal in den Norden des Frames, einmal in den Westen und einmal in das Zentrum.

  13. Wie vorher, aber geben Sie dem Panel eine eigene Farbe.

  14. Legen Sie ein Fenster an ("is a"-Ansatz) und besetzen Sie die vier Ränder des Frames mit vier Buttons mit vier Aufschriften. Verwenden Sie beide möglichen Konstruktoren jeweils zweimal.

  15. Wie vorher. Stellen sie fest, welchen Defaultwert die Methode getActionCommand() liefert, wenn man setActionCommand() nicht verwendet.

  16. Legen Sie ein Fenster an ("is a"-Ansatz) und besetzen Sie die vier der fünf Regionen des Frames mit vier Buttons mit den Aufschriften 1 bis 4. Verwenden Sie ein Array von Buttons und ein StringArray für die Regionenkonstanten und nehmen Sie die Buttons damit in einer for-Schleife auf. Verwenden Sie für den Frame die Methode getComponents() und geben Sie die so erhaltenen Komponenten auf System.out. aus. Stellen sie damit fest, daß ein Container seine Komponenten in der Reihenfolges des Aufnehmens durchnumeriert.

  17. Legen Sie drei Checkboxen mit drei verschiedenen Konstruktoren an. Jede Checkbox soll einen Text tragen und zwei der drei Checkboxen sollen markiert sein. Legen Sie alle drei Checkboxen in ein Panel und dieses Panel in den Norden eines Frames.

  18. Wie vorher, aber legen Sie nochmal drei Checkboxen an. Verwandeln Sie die neuen Checkboxen in Radiobuttons und nehmen Sie diese in das gleiche Panel auf.

  19. Wie vorher, aber stecken sie die ersten drei Checkboxen in ein eigenes Panel. Nehmen Sie ebenso die drei Radiobuttons in ein eigenes Panel auf. Legen Sie diese beiden Panel wiederum in ein Panel und plazieren Sie letzeres in den Norden eines Frames.

    TextField, TextArea

  20. Legen Sie mit den Konstruktoren TextField() und TextField(String text) drei Textfelder mit den Anfangstexten "north", "east" und "center" an. Geben Sie den Textfeldern jeweils drei verschiedene Farben für den Hintergund und den Vordergrund und legen Sie sie in einem Frame in die entsprechenden Ränder von BorderLayout. Die Texte "north" und "east" sollen markiert erscheinen, vom Text "center" soll der Teil "enter" markiert erscheinen. Der Text im Zentrum soll nicht editierbar sein.

  21. Legen Sie mit drei verschiedenen Konstruktoren drei TextAreas mit 4 Zeilen und 10 Spalten und den Anfangstexten "north", "east" und "center" an. Geben Sie den TextAreas jeweils drei verschiedene Farben für den Hintergund und den Vordergrund und legen Sie sie in einem Frame in die entsprechenden Ränder von BorderLayout. Die Texte "north" und "east" sollen markiert erscheinen, vom Text "center" soll der Teil "enter" markiert erscheinen. Der Text im Zentrum soll nicht editierbar sein.

    List, Choice

  22. Legen Sie eine Liste an, die alle Farben enthält, zu denen es Farbkonstanten in der Klasse Color gibt. Legen Sie diese Liste in ein Frame in den Westen oder Osten des DefaultBorderLayouts. Mit einem einfachen Mausklick wird die ausgewählte Farbe im Frame dargestellt.

  23. Wie vorher, jedoch mit einem Choiceobjekt im Norden oder Süden.

  24. Kleines Stadt/Land-Spiel. Legen Sie in einem Frame drei Listen an, eine im Westen, eine im Zentrum und eine im Osten. Die linke Liste enthalte eine Reihe von Städtenamen, die rechte Liste eine Reihe von Ländernamen. Die mittlere Liste sei zunächst leer. Mit einem Doppelclick auf Städtenamen der linken liste kann man Städte in die mittlere Liste aufnehmen. Mit einem Doppelclick auf einen Ländernamen der rechten liste kann man ein Land zu der in der mittleren Liste ausgewählten Stadt hinzufügen. Der Eintrag besteht dann aus dem Städtenamen gefolgt von einem Leerzeichen und dem Ländernamen. Mit einem Doppelclick auf Einträge der mittleren liste kann man einen Eintrag löschen, falls man eine falsche Zuordnung gemacht hat.
    Robustheit:
    Enthält ein Eintrag in der mittleren Liste bereits einen Ländernamen, so bleibt ein Doppleclick in die Länderliste ohne Eirkung (man kann also immer nur ein Land zur Stadt hinzufügen.
    Ist die mittlere Liste leer, so darf ein Doppleclick auf die Länderliste zu keiner RuntimeException führen.
    Man kann eine Stadt nur einmal in die mittlere Liste aufnehmen.

  25. Analog zu obiger Übung aber mit Choiceobjekten. Ein Choiceobjekt im Norden für die Städte, ein Choiceobjekt im Süden für die Länder, ausgewählt wird mit einfachen Mausclick. Eine Liste im Zentrum für Stadt/land Eintrag. Funktionalität wie oben.

    Scrollbar

  26. Ausgangspunkt ist ein Frame. Im Nordbereich des BorderLayout soll ein waagrechter Scrollbalken erscheinen, sowie rechts davon ein Label, das den aktuellen Wert der Scrollbar anzeigt. Beide Komponenten müssen also in einem Panel mit geeignetem Layout liegen. Mit Hilfe des Schiebereglers sollen Graustufen im Zentrum angezeigt erden. Die Stellung ganz links entspricht dem Wert 0 und der Farbe schwarz, die Stellung ganz rechts entspricht dem Wert 0 und der Farbe weiß. Das Label soll die gleiche Hintergrundfarbe besitzen wie die Scrollbar.

    Menus

  27. Entwerfen Sie ein Frame mit einer MenuBar. Die MenuBar enthalte die zwei Menus "Datei" und "Ansicht". Im Zentrum befindet sich eine TextArea, im Süden ein Label als Statuszeile. Das Dateimenu enthalte die beiden MenuItems "Öffnen" und "Beenden", das Ansichtsmenu enthalte ein CheckboxMenuItem namens "Statuszeile". Die MenuItems von "Datei" machen beim Auswählen nur eine Ausgabe von e.paramString() in die TextArea (append verwenden). Das CheckboxMenuItem "Statuszeile" blendet die Statuszeile ein und aus und macht zusätzlich eine Ausgabe von e.paramString() in die TextArea (append verwenden).

    Graphikprogrammierung

  28. Entwerfen Sie eine Klasse ZeichenCanvas. ZeichenCanvas ist eine Unterklasse von Canvas mit folgenden Methoden.

    •  public void update(Graphics g)
       update() ruft paint()
    •  public void paint(Graphics g)
       zeichnet einen Punkt
    •  public Dimension getPreferredSize()
       liefert die Defaultgröße des Canvas (z.Bsp. 400x250)
    •  public void setPreferredSize(Dimension dim)
       setzt die Größe des Canvas

    Ereignisbehandlung:

    Der Canvas wird mit einem MouseListener und einem MouseMotionListener ausgestattet (wahlwiese über implements oder über eine nested class). Klickt ein Benutzer die linke Maustaste oder zieht er mit der linken Maustaste (drag), so werden die Koordinaten ermittelt. Mit Hilfe dieser Koordinaten zechnet paint() dann einen Punkt in der aktuellen Vordergrundfarbe. Mit der rechten Maustaste wird die Zeichnung gelöscht.

    Hinweis:
    In mouseClicked() kann die Maustaste (links oder rechts) wahlweise mit e.getButton() oder mit e.getModifiers() ermittelt werden, in mouseDragged() dagegen muß e.getModifiers() verwendet werden (e ist der MouseEvent).

    Schreiben Sie eine kleine Applikation, die den Zeichencanvas testet.

  29. Erweitern sie die Klasse ZeichenCanvas so, daß man die Zeichenfarbe wählen kann. Führen sie ein Attribut zeichenFarbe ein und schreiben sie die zugehörigen set/get-Methoden. Defaultzeichenfarbe sei schwarz. Schreiben Sie eine kleine Applikation, die den neuen Zeichencanvas testet, der Benutzer kann also die Zeichenfarbe wählen.

  30. Erweitern sie die Klasse ZeichenCanvas nochmal. Mit der rechten Maustaste soll die Zeichnung nicht gelöscht werden, sondern es soll radiert werden können. Schreiben sie zum Löschen eine eigene Methode clear(). Schreiben Sie eine kleine Applikation, die den neuen Zeichencanvas testet, der Benutzer kann die Zeichenfarbe wählen, mit der rechten Maustaste radieren und hat einen Button zum Löschen des Bildes.

top Prev Next Exercise up Home