EAD II – Übung 5

Werbung
EAD II – Übung 5
Graphische Benutzungsoberfläche mit BlueJ
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
getContentPane().add(zeitanzeige);
  oder man erstellt eine Variable vom Typ Container
und weist dieser den Rückgabewert von
getContentPane() zu (einfacher lesbar)
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);
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