There is also an English version. If you like to help to proofread please contact me: ullenboom ät g m a i l dot c o m.

Java Videotraining Werbung

Videotraining Spring 2 Boot Werbung

Videotraining Spring 3 Boot Werbung

1. Grafische Oberflächen mit Swing

1.1. Das erste Programm

1.1.1. Ereignisbehandlung ⭐

Implementiere ein Swing-Programm, welches

  1. ein JFrame erzeugt,

  2. das Fenster auf die Größe 600 x 200 bringt,

  3. den Titel auf "Man nennt es "Das Fenster"" setzt und das

  4. Fenster auf dem Bildschirm anzeigt.

1.2. Ereignisbehandlung

1.2.1. Einrastern von Fenstern ⭐⭐

Einige Softwareprodukte, wie etwa Winamp, haben für Fenster ein "Einrasten" implementiert. Wenn man etwa 20 Pixel vom Rand entfernt ist, heftet sich das Fenster automatisch an den Rand. Wie wird so etwas prinzipiell funktionieren?

  1. Tipp: Die maximale Auflösung liefert Toolkit.getDefaultToolkit().getScreenSize(). Ein Fenster kann man mit setPosition(…​) auf eine absolute Stelle setzen.

  2. Tipp: Es gilt nur noch, die aktuellen Koordinaten während des Verschiebens zu ermitteln. Finde dazu heraus, ob die Methode componentMoved() ein Schlüssel zu dem Problem ist.

1.2.2. Maus-Ereignisse ⭐

Erzeuge ein Fenster und fange Maus-Events ab. Gib die Koordinaten auf dem Bildschirm aus.

  • Wie kann man die Koordinaten der Form "x=2, y=3" in die Titelleiste des Fensters schreiben?

1.2.3. Fenster-Ereignisse ⭐

Erzeuge ein Fenster. Die Applikation soll nun auf Eigenschaften wie Miniaturisieren oder Schließen der Fenster reagieren. Dazu soll die Schnittstelle java.awt.event.WindowListener implementiert werden. Die Applikation soll beim Schließen beendet werden ( System.exit(0)).

1.2.4. JClosableFrame ⭐

Implementiere die Hilfsklasse JClosableFrame, die automatisch das Fenster schließt, falls der Benutzer das X im Fensterrahmen (oder Alt+F4) drückt. JClosableFrame soll eine Unterklasse von javax.swing.JFrame sein. Achte auf die Behandlung der Ereignisse mit setDefaultCloseOperation(…​). Man kann dann diese Klasse für ihre eigenen Programme nutzen und muss sich dann nicht mehr um die Schließen-Ereignisse kümmern. Zwar würde das Fenster mit ` setDefaultCloseOperation(…​)` auch geschlossen, aber wir könnten auf das Ende nicht mehr mit einer eigenen Aktion reagieren.

  1. Gib, falls das Fenster geschlossen wird, eine Meldung auf dem Bildschirm aus.

  2. Nutze die Klasse javax.swing.JOptionPane und die Methode showConfirmDialog(…​), um einen Bestätigungsdialog anzuzeigen. Die API-Dokumentation zeigt ein Beispiel für diese Methode. Man kann als String eine Nachricht einsetzen, wie etwa "Soll die Applikation wirklich beendet werden?"

1.2.5. Ein JFrame ⭐

  1. Schreibe ein Programm, welches ein javax.swing.JFrame mit einem javax.swing.JLabel auf dem Bildschirm ausgibt. Setze die Größe des Fenster auf 256 x 256 Pixel.

  2. Füge dem javax.swing.JLabel Fenster einen java.awt.event.MouseMotionListener hinzu. Wird die Maus bewegt, sollen die Koordinaten auf den Bildschirm gebracht werden.

  3. Erfrage aus dem java.awt.event.MouseEvent den Verursacher des Ereignisses. (Das wird dann ja das javax.swing.JLabel gewesen sein.) Nutze die x- und y-Koordinaten, um daraus ein Farb-Objekt zu bauen: new java.awt.Color(x,y,0). Setze dann diese Farbe mit Hilfe der Methode setColor(…​).

1.3. Komponenten ⭐

1.3.1. Schaltflächen mit JButton

Ein javax.swing.JFrame soll über einen javax.swing.JButton auf dem Bildschirm verfügen. Wird der Button drückt, soll die Applikation geschlossen werden.

1.3.2. Layoutmanager ⭐

Wie kann eine Telefontastatur mit Hilfe eines java.awt.GridLayout gezeichnet werden?

  1. Nutze einen Konstruktor, mit dem man etwas Abstand zwischen die Tasten bekommt.

  2. Setze mit geschachtelten Layouts über die Tastatur ein javax.swing.JTextField und unter die Tastatur ein javax.swing.JTextArea-Objekt. Wie muss man die Layoutmanager verschachteln? Denke an javax.swing.JPanel , um einen Container für Komponenten zu bilden.

  3. Werden Schaltflächen gedrückt, sollen im oberen Textfeld die gedrückten Ziffern gesammelt werden. Nutze dafür intern einen String, der bei jeder gedrückten Taste wächst.

  4. Erweiterung: Werden in der Textzeile bis zu acht Ziffern eingesetzt, so sollen im Textfeld zu einer Telefonnummer mögliche Merkhilfen genannt werden. Die Merkhilfe basiert auf der Idee, dass auf einer Telefontaste zusätzliche Buchstaben stehen, sodass aus einer Telefonnummer eine Zeichenkette als Gedächtnisstütze wird. Folgende Zuweisung wird vorgenommen: 1:1, 2:ABC, 3:DEF, 4:GHI, 5:JKL, 6:MNO, 7:PQRS, 8:TUV, 9:WXYZ.
    Ein ähnliches Windows-Programm findet man unter http://www.maf-soft.de.

1.3.3. Euro-Umrechner ⭐

Schreibe eine Swing-Applikation zum Umrechnen der DM-Beträge in Euro-Beträge. Baue dazu eine grafische Oberfläche mit zwei Textfeldern ( javax.swing.JTextField ) auf. Wenn man in der oberen Textbox (für Euro) etwas schreibt, dann sollte in der unteren Textbox der Wert angezeigt werden. Die Umrechnung sollte umgekehrt genauso funktionieren. Implementiere für die Ereignisbehandlung einen ActionListener.
Nutze ein java.awt.BorderLayout , um die Textfelder anzuordnen. (Man kann auch mit einem GridLayout-Manager rechts den Text (Euro/DM) und links die Textfelder platzieren).

  • Anstatt erst bei einer Aktivierung der Return-Taste die Berechnung vorzunehmen, kann man auch bei jedem gedrückten Zeichen die Umrechnung machen.

  • Erweitere das Programm so, dass fehlerhafte Zeichen aus der Eingabe gelöscht werden.

1.3.4. Scrollbars und Textfelder ⭐

  1. Ein Fenster soll einen horizontalen Schieberegler javax.swing.JScrollBar enthalten. Implementiere eine Ereignisbehandlung und gib den selektierten Wert auf dem Bildschirm aus.

  2. Der Schieberegler soll die Werte 0 bis 255 annehmen können.

  3. Erweiterung: Das Fenster soll zusätzlich ein java.awt.Canvas-Objekt enthalten.

  4. Gib dem Hintergrund die Standard-Farbe Schwarz. Das kann man mit der Methode setBackground( new Color(0,0,0) ) erreichen.

  5. Wenn man den Schieberegler bewegt, soll sich die Farbe im Textfeld ändern. Es soll nur der Blau-Wert verändert werden.