EAD II – Übung 5

Werbung
EAD II – Übung 5
Graphische Benutzungsoberfläche mit BlueJ
Java GUI Überblick
Java GUI erste Schritte
!  Fenster erzeugen
!  Elemente in Container des Fensters einfügen
!  Größe und andere Eigenschaften der Elemente
festlegen
!  Fenster sichtbar machen
Graphische Benutzungsoberfläche (GUI)
!  Fenster, das weitere Komponenten zur Darstellung
und Interaktion enthält
!  spezielle Standardbibliotheken erforderlich, die
importiert werden müssen
import javax.swing.*;
import java.awt.*;
!  über Interaktion mit den Komponenten können
Methoden aufgerufen werden
!  bisher: Interaktion nur über Rechtsklick auf Klassen
und Objekte in BlueJ
Bestandteile von GUIs
!  Komponenten werden durch Objekte repräsentiert
!  z.B. Labels zur Anzeige von Text, Textfelder, in die
Nutzer etwas eingeben können
!  Buttons können angeklickt werden und durch
weitere Verknüpfung Methoden aufrufen
!  Layout der Komponenten auf dem Bildschirm wird
durch Layoutmanager kontrolliert
!  Ereignisverarbeitung sorgt dafür, dass das
Programm auf Nutzereingaben (wie Klick auf
Button) reagiert
Komponenten
!  JFrame: oberflächenunabhängiges Fenster
http://www.dpunkt.de/java/Referenz/Das_Paket_javax.swing/175.html
!  Container: abstrakte Klasse, die Komponenten
zusammenfasst
http://www.dpunkt.de/java/Referenz/Das_Paket_java.awt/37.html
!  JButton: implementiert einen drückbaren Button
http://www.dpunkt.de/java/Referenz/Das_Paket_javax.swing/100.html
!  JLabel: zeigt unveränderbaren Text oder Graphik an
http://www.dpunkt.de/java/Referenz/Das_Paket_javax.swing/147.html
Fenster erzeugen und Zeit darstellen
!  neue Klasse erzeugen, die für die GUI zuständig ist
!  Klasse soll von JFrame abgeleitet werden, damit sie
alle Eigenschaften und Methoden davon erbt
public class GUI extends JFrame
!  alle geplanten Komponenten als Instanzvariablen
deklarieren
private JLabel zeitanzeige;
!  im Konstruktor der Oberfläche die Instanzvariablen
erzeugen
zeitanzeige = new JLabel();
Fenster darstellen und Uhrzeit anzeigen
!  zur Darstellung einer Uhrzeit braucht die Oberfläche
Zugriff auf eine Uhr
!  braucht also ein Objekt Uhr, mit dem sie
interagieren kann
!  Instanzvariable vom Typ Uhrenanzeige deklarieren
und im Konstruktor erzeugen
private Uhrenanzeige meineUhr;
meineUhr = new Uhrenanzeige();
Fenster darstellen und Uhrzeit anzeigen
!  Komponenten müssen nach der Erzeugung noch
dem Inhaltsbereich des Fensters hinzugefügt werden
!  Variable für den Inhaltsbereich erzeugen und dann
mit add() Komponenten hinzufügen
private Container inhalt;
inhalt = new Container();
inhalt = getContentPane();
inhalt.add(zeitanzeige);
Fenster darstellen und Uhrzeit anzeigen
!  Fenster muss noch sichtbar gesetzt werden (im
Konstruktor)
setVisible(true);
!  sinnvolle Ergänzungen:
Größe setSize(100,100);
Farbe inhalt.setBackground(Color.blue);
!  für Farbe siehe auch Übung 2, Farbe als Parameter
übergeben:
Color farbe = new Color(120, 200, 0);
inhalt.setBackground(farbe);
Beispiel Uhr: Konstruktor
zeitanzeige = new JLabel();
meineUhr = new Uhrenanzeige();
inhalt = new Container();
inhalt = getContentPane();
inhalt.setLayout(new GridLayout(2,2));
setSize(100,100);
Color farbe = new Color(120, 200, 0);
inhalt.setBackground(farbe);
inhalt.add(zeitanzeige);
zeitanzeige.setText(meineUhr.getZeitanzeige());
setVisible(true);
Button und Ereignisverarbeitung
!  sollen weitere Komponenten im Fenster platziert
werden, muss ein Layout eingerichtet werden
!  Buttons für Interaktivität
!  Ereignisverarbeitung muss beschrieben werden: was
genau soll passieren, wenn ein Button angeklickt
wird?
!  Button muss auf Ereignisse warten, das muss
aktiviert werden
Layout: Grid-Layout
!  Layout inhalt.setLayout(new
GridLayout(1,2)); (1 Zeile, 2 Spalten)
!  Komponenten werden in einem Gitter aus gleich
großen Zellen angeordnet
!  Breite bzw. Höhe entspricht der breitesten/höchsten
Komponente
!  Abstand zwischen Zellen standardmäßig 0, kann im
Konstruktor eingestellt werden
!  Zellen werden von oben links nach unten rechts
gefüllt
Button hinzufügen
!  Instanzvariable erstellen, im Konstruktor erzeugen
und zum Container hinzufügen:
private JButton button1;
button1 = new JButton("Taktsignal");
inhalt.add(button1);
Ereignisverarbeitung
!  Objekt kann auf Ereignisse „lauschen“ mit einem
EventListenerInterface
!  braucht dazu ein weiteres Package
import java.awt.event.*;
!  Button löst ein ActionEvent aus, wenn er gedrückt
wird
!  für Button muss eine eigene Listener-Klasse erstellt
werden, die auf die Ereignisse von genau diesem
Button „lauscht“
Listener für Button
button1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
meineUhr.taktsignalGeben();
zeitanzeige.setText(meineUhr.getZeitanzeige());
}
}
);
Herunterladen