VL 12 - InfIng

Werbung
Informatik für Ingenieure (InfIng)
GUI – Graphical User Interface
Doz. Dipl.-Ing. H. Hiller
WS 2012/13
Unsere Kommunikation mit dem Computer…
 Immer wieder grafische Benutzeroberflächen
 Menüs, Ikons, etc.
 Auswahlboxen, Textfelder, Checkboxen, etc.
Menü
Radio-Button
Texteingabefeld
Check-Box
Combo-Box
Ikon-Leiste
FH D
Fachhochschule Düsseldorf
Seite 2
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Themen dieser Vorlesung
Wir wollen folgenden Fragen nachgehen:
1. "Womit können wir in Java eine GUI zaubern?"
 AWT/Swing
2. "Was eignet sich am besten für den Einstieg?"
 AWT
FH D
Fachhochschule Düsseldorf
Seite 3
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Übersicht
 Einführung
AWT
AWT-Paket
Container
Komponenten
Layout-Manager
Event-Handling
Ausblick
FH D
Fachhochschule Düsseldorf
Seite 4
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Historisches
 1973: Xerox Alto
 Erster Computer mit grafischer Oberfläche, Einsatz auf die Forschung begrenzt
 1981: Xerox Star
 Erste kommerzielle Verwendung einer GUI
 1983: Apple Lisa
 Basierend auf Inspirationen der Firma Xerox (Entwicklung wurde 1979 gestartet)
 1984: Macintosh
 GUI entwickelt unter der Leitung von Steve Jobs
 1985: MS Windows 1.0, Atari ST, Commodore Amiga
 Windows Version 1.03 praktisch nicht einsetzbar
 1992: MS Windows 3.1
 Erste brauchbare Windows-Version
 2010: MS Windows 7, Mac OS X Leopard, etc.
FH D
Fachhochschule Düsseldorf
Seite 5
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
GUI (Graphical User Interface)
 Kommunikation Benutzer/Programm




Interaktion zwischen Benutzer und Programm über grafische Elemente
Umfasst Elemente wie Icons, Menüs, Eingabefelder, Combo-Boxen, etc.
Steuerung der Elemente mit einem Zeigegeräte wie beispielsweise der Maus
Ablösung der zeilenorientierten Kommunikation (CLI, Command Line Interface)
 Realisierung in Java
 Ursprüngliche mittels AWT (Abstract Windowing Toolkit)
 AWT konnte nicht alle Wünsche erfüllen, Hersteller entwickelten eigene Pakete
–
–
Internet Foundation Classes (IFC) von Netscape
Application Foundation Classes (AFC) von Microsoft
 Ablösung der proprietären Bibliotheken durch die Java Foundation Classes (JFC)
 Java Foundation Classes
 Gemeinschaftsprojekt der Firmen Sun, Netscape, IBM und Apple
 JDK1.2 (Java 2) enthält die JFC als integrierten Bestandteil (1998)
 AWT (Abstract Windowing Toolkit) ist in den JFC enthalten
FH D
Fachhochschule Düsseldorf
Seite 6
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
JFC (Java Foundation Classes)
 Überblick der Komponenten
Swing
AWT Komponenten
(Frame, Button, etc.)
Java 2D
Drag & Drop
Accessibility
 Bedeutung der Komponenten





AWT
: GUI Komponenten, Basis für Swing Komponenten
Swing
: GUI Komponenten & Pluggable Look & Feel* Support
Java 2D
: Darstellung & Modifikation 2-dimensionaler Objekte
Accessibility : Unterstützungstechnologien für Menschen mit Behinderung
Drag & Drop : Datentransfer zwischen Java-Programmen u. nativen Programmen
* Pluggable Look & Feel = Umschalten des Look & Feel während der Laufzeit ohne Restart der Applikation
FH D
Fachhochschule Düsseldorf
Seite 7
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
AWT
 AWT (Abstract Windowing Toolkit)
 Java-Paket für die Implementierung grafischer Benutzeroberflächen
 Standard-API zur Implementierung einer plattform-abhängigen GUI
–
API = Application Programming Interface, Programmierschnittstelle
 AWT ist Bestandteil und teilweise Basis der Java Foundation Classes (JFC)
 Heavyweight-Framework
 Verwendung nativer GUI-Komponenten des jeweiligen Betriebssystems
–
–
AWT Komponenten haben Partner (engl. "Peers") in der nativen GUI
Peers binden z.T. umfangreiche Betriebssystem-Ressourcen  heavyweight
 AWT bildet den kleinsten gemeinsamen Nenner aller Plattformen
–
Komponenten werden von allen Plattformen unterstützt (Microsoft Windows, Linux)
 Look & Feel
 Identisch mit den für das Betriebssystem direkt entwickelten Anwendungen
AWT ist der Baukasten für eine plattform-abhängig GUI.
FH D
Fachhochschule Düsseldorf
Seite 8
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Swing
 Swing
 Java-Paket für die Implementierung komplexer Benutzer-Schnittstellen (GUIs)
 Umfangreiche und leistungsstarke Sammlung von grafischen Komponenten
 Lightweight Framework
 Komponenten sind fast vollständig in Java implementiert
–
–
Komponenten werden komplett gezeichnet
Keine "Peers" in der nativen GUI des Betriebssystems  Lightweight
 Nur wenige Komponenten basieren auf AWT-Komponenten
–
–
–
Leichtgewichtige Komponenten können nicht für sich alleine gezeichnet werden
Sie enden letztlich immer in einer schwergewichtigen Komponente (z.B. JFrame)
JFrame = Fenster ohne Rahmen; schwergewichtig, obwohl aus dem Swing-Paket
 Look & Feel
 Verschiedene Erscheinungsbilder, Umschaltung zur Laufzeit möglich
Swing ist der Baukasten für eine plattform-unabhängig GUI.
FH D
Fachhochschule Düsseldorf
Seite 9
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Übersicht
Einführung
 AWT
AWT-Paket
Container
Komponenten
Layout-Manager
Event-Handling
Ausblick
FH D
Fachhochschule Düsseldorf
Seite 10
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
AWT Paket
 Aufbau einer GUI mit dem Abstract Windowing Toolkit (AWT)
 In Java hat die Gestaltung eines Programms mit GUI 3 Aspekte
 Erzeugen der grafischen Elemente
 Anordnen der grafischen Elemente mittels eines Layout-Managers
 Reagieren auf Ereignisse, ausgesendet von den Komponenten
 In dieser Vorlesung werden folgende Elemente einer GUI vorgestellt
 Fenster (Frame), Menü sowie Button und Checkbox
Warum orientiert sich diese Vorlesung am
AWT und nicht an Swing?
Das AWT ist einfacher zu erlernen und auch die AWTKlassenhierarchie ist übersichtlicher!
FH D
Fachhochschule Düsseldorf
Seite 11
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
AWT Paket
 AWT ist ein Java-Paket
 Zusammenfassung logisch zusammengehörender Klassen
 AWT-Komponenten finden sich im Paket java.awt sowie den Unterpaketen
 Enthält alle Grundklassen zur Erstellung einer GUI mittels Java
 AWT-Paket einbinden
 Einbindung im Programm mit: import java.awt.*
 Mit dem * werden alle Klassen des Pakets eingebunden
 In dieser Vorlesung verwendete Klassen





java.awt.Frame
java.awt.FlowLayout
java.awt.Button
java.awt.Checkbox
java.awt.event.*
FH D
Fachhochschule Düsseldorf
: Fenster
: Layout-Manager
: Schaltfläche
: Auswahlbox
: Ereignis-Steuerung
Seite 12
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
AWT Paket
 Dokumentation
 Oracle (SUN): www.oracle.com
–
–
Am rechten Seitenrand Auswahlfeld Oracle Technology Network öffnen
Link folgen: Java Developers  Java SE  Documentation  APIs  Core API
FH D
Fachhochschule Düsseldorf
Seite 13
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Klassen des AWT-Pakets
 Component
 Fenster-Teilfläche, kein selbständiges Fenster
 Basisklasse für alle GUI-Komponenten
 Container
Component
Container
CheckBox
 Zusammenfassung mehrerer Komponenten
 Window
Button
Window
 Top-Level-Window (eigenständiges Fenster)
 Fenster ohne Rahmen, Titelleiste und Menü
 Fenstersteuerung obliegt der Anwendung
 Frame
Choice
Frame
:
TextField
AWT Klassen (Auszug)
 Top-Level-Window (eigenständiges Fenster)
 Fenster mit Rahmen und Titel sowie Option zum Einbinden einer Menüleiste
 Checkbox, Button, Choice
 Auswahlboxen, Schaltflächen, Texteingabefelder (ein- oder mehrzeilig), etc.
FH D
Fachhochschule Düsseldorf
Seite 14
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Übersicht
Einführung
 AWT
AWT-Paket
Container
Komponenten
Layout-Manager
Event-Handling
Ausblick
FH D
Fachhochschule Düsseldorf
Seite 15
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Container
 Container-Klassen
Component
 2 "Haupt-Typen" von Containern: Window und Panel
 2 Arten bzw. Klassen von Window: Frame und Dialog
 Frame
Container
Window
 Eigenständiges Fenster mit Rahmen und Titel
 Buttons zum Minimieren, Wiederherstellen, etc.
Panel
Frame
Titelleiste
Schließen
Wiederherstellen
Minimieren
FH D
Fachhochschule Düsseldorf
Seite 16
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Container: Frame
 Klasse Frame
 Einfaches Fenster mit Standard-Elementen
 Alle Fenster sind eine Sub-Klasse von Frame
Component
Container
Window
Panel
Frame
meinFenster
 Geerbte Methoden (Auszug)
Methode
Beschreibung
void setTitle(String title)
Titel des Fensters setzen
void setVisible(boolean b)
Anzeigen (b=true) oder Verstecken (b=false) des Fensters
void setSize(int width, int height)
Größe des Fensters einstellen
FH D
Fachhochschule Düsseldorf
Seite 17
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Container: Frame
 Beispiel
 Einfaches Fenster mit Standard-Elementen
import java.awt.Frame;
public class meinFenster extends Frame
{
// Anweisungen
}
public class Test
{
public static void main( String args[] )
{
meinFenster mF = new meinFenster();
mF.setTitle("Mein Fenster..."); // Titel eintragen
mF.setSize (300,200);
// Größe des Fensters einstellen
mF.setVisible (true);
// Fenster anzeigen
}
}
Hinweis: Fenster kann im Moment nur über den Task-Manager geschlossen werden
FH D
Fachhochschule Düsseldorf
Seite 18
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Übersicht
Einführung
 AWT
AWT-Paket
Container
Komponenten
Layout-Manager
Event-Handling
Ausblick
FH D
Fachhochschule Düsseldorf
Seite 19
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Menü
 Basisklasse eines Menüs
 Basisklasse für alle Komponenten ist MenuComponent
MenuComponent
 Sub-Klassen
 MenuItem - Menü-Eintrag, z.B. "Speichern"
 Menu
- Menü/Untermenü, z.B. "Datei"
 MenuBar - Menü-Bar, Leiste mit mehreren Menüs
MenuItem
MenuBar
Menu
 Menü erstellen
 Instantiieren von Objekten aus den o.a. Sub-Klassen
FH D
Fachhochschule Düsseldorf
Seite 20
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Menü
 Menüeintrag erzeugen
 Menü-Eintrag ist ein Objekt der Klasse MenuItem
 Bezeichnung des Eintrags erfolgt über den Konstruktor
 Beispiel: MenuItem mNeu = new MenuItem("Neu")
 Menü und Menü-Leiste erzeugen




Menü ist eine Objekt der Klasse Menu
Beispiel: Menu mDatei = new Menu("Datei")
Menübar ist eine Objekt der Klasse MenuBar
Beispiel: MenuBar mMeLeiste = new MenuBar()
FH D
Fachhochschule Düsseldorf
Seite 21
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Menü
 Zusammenfügen der Menü-Elemente
 Menu und MenuBar verfügen über add() - Methoden
 Integration der Elemente durch Aufruf der o.a. Methoden
 Einfügen eines Menü-Eintrags in das Menü




Klasse MenuItem stellt Methode add() zur Verfügung
Einfügen erfolgt über den Aufruf der o.a. Methode
Übergabe-Parameter ist der einzelne Menü-Eintrag
Beispiel: mDatei.add(mNeu)
+
=
 Einfügen eines Menüs in die Menü-Leiste




Klasse MenuBar stellt Methode add() zur Verfügung
Einfügen erfolgt über den Aufruf der o.a. Methode
Übergabe-Parameter ist das komplette Menü
Beispiel: mMeLeiste.add(mDatei)
FH D
Fachhochschule Düsseldorf
Seite 22
Informatik für Ingenieure WS 2012/13
=
+
=
FB 5
Fachbereich Medien
Menü
 Einfügen des Menüs in den Container
 Klasse Frame hält hiefür die Methode setMenuBar() bereit
 Beispiel: setMenuBar(meineMeLeiste)
setMenuBar(meineMeLeiste)
FH D
Fachhochschule Düsseldorf
Seite 23
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Menü
 Beispiel
 Erstellung eines Standard-Fensters inklusive Menü in der Zusammenfassung
import java.awt.*;
public class meinFenster extends Frame
{
meinFenster()
{
MenuItem mNeu = new MenuItem("Neu");
Menu mDatei = new Menu("Datei");
MenuBar mMeLeiste = new MenuBar();
mDatei.add(mNeu);
mMeLeiste.add(mDatei);
setMenuBar(mMeLeiste);
}
}
FH D
Fachhochschule Düsseldorf
public class Test
{
public static void main( String args[] )
{
meinFenster mF = new meinFenster();
mF.setTitle("Mein Fenster...");
mF.setSize (300,200);
mF.setVisible (true);
}
}
Seite 24
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Button
 Button
 Komponente, die bei Anklicken eine bestimmte Aktion auslösen soll
 Buttons sind Objekte der Klasse Button (import java.awt.Button)
 Konstruktoren, Methoden siehe Dokumentation von Sun, bzw. Oracle
 Beispiel
import java.awt.Frame;
import java.awt.Button;
public class meinFenster extends Frame
{
meinFenster()
{
Button but_j = new Button("Ja");
Button but_n = new Button("Nein");
add(but_j);
add(but_n);
Hinweis: Prinzipielle Darstellung;
Ergebnis wie oben erst nach
Einbindung des Layout-Managers.
}
}
FH D
Fachhochschule Düsseldorf
Seite 25
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Checkbox
 Checkbox
 Komponente, die entweder ein (angeklickt) oder aus (nicht angeklickt) sein kann
 Checkboxen sind Objekte der Klasse Checkbox (import java.awt.Checkbox)
 Konstruktoren, Methoden siehe Dokumentation von Sun, bzw. Oracle
 Beispiel
import java.awt.Frame;
import java.awt.Checkbox;
public class meinFenster extends Frame
{
meinFenster()
{
Checkbox cb_zu = new Checkbox();
Checkbox cb_mi = new Checkbox();
cb_zu.setLabel("Mit Zucker");
cb_mi.setLabel("Mit Milch");
add(cb_zu);
add(cb_mi);
}
}
FH D
Fachhochschule Düsseldorf
Seite 26
Informatik für Ingenieure WS 2012/13
Hinweis: Prinzipielle Darstellung;
Ergebnis wie oben erst nach
Einbindung des Layout-Managers.
FB 5
Fachbereich Medien
Übersicht
Einführung
 AWT
AWT-Paket
Container
Komponenten
Layout-Manager
Event-Handling
Ausblick
FH D
Fachhochschule Düsseldorf
Seite 27
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Layout-Manager
 Layout-Manager
 Verantwortlich für die Anordnung der Komponenten in einem Container
 Manuelle Anordnung der Komponenten
 Null-Layout-Manager, pixelgenaue Anordnung mittels Koordinaten
 Erweiterungen verbunden mit Neuausrichtung bestehender Komponenten
 Keine Anpassung der Komponente bei Veränderungen der Container-Größe
 Automatische Anordnung der Komponenten
 Qualitative Angaben zur Lage der Komponente
–
–
Komponente soll links zu einer anderen stehen
Komponente sollen untereinander stehen
 Automatische Anpassung der Komponenten bei neuer Container-Größe
 Schachtelung
 Umfangreiche Layouts durch Schachtelung der LayoutManager möglich
FH D
Fachhochschule Düsseldorf
Seite 28
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Layout-Manager
 FlowLayout
 Anordnung nebeneinander in einer Zeile
 Ggf. automatischer Umbruch in Folgezeile
 Beispiel: Icon-Leiste bei Word, Excel, etc.
 BorderLayout
 5 Komponenten für die Platzierung
–
–
North, South, West, East und Center
BorderLayout ist Default Manger
 Beispiel: Textfeld und Button-Leiste
 GridLayout
 Anordnung in einem rechteckigen Gitter
–
–
Alle Gitterzellen sind gleich groß
Pro Komponente genau eine Gitterzelle
 Zeilen- und Spaltenzahl konfigurierbar
FH D
Fachhochschule Düsseldorf
Seite 29
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Layout-Manager
 Beispiel
 GridLayout mit 2 Zeilen und 2 Spalten
–
–
–
Klasse Label
 Feld mit Text
Klasse TextField  Texteingabefeld
Klasse Button
 Button zum Anklicken
 Aufbau des Fensters u.Anordnung der einzelnen Elemente erfolgt im Konstruktor
import java.awt.*;
public class meinFenster extends Frame
{
meinFenster()
{
GridLayout gl = new GridLayout(2,2);
setLayout(gl); setTitle("Übersetzung");
add(new Label("Worteingabe:"));
add(new TextField());
add(new Button("Deutsch -> Englisch"));
add(new Button("Englisch -> Deutsch"));
}
}
FH D
Fachhochschule Düsseldorf
Seite 30
Informatik für Ingenieure WS 2012/13
Anzahl Zeilen
Anzahl Spalten
FB 5
Fachbereich Medien
Übersicht
Einführung
 AWT
AWT-Paket
Container
Komponenten
Layout-Manager
Event-Handling
Ausblick
FH D
Fachhochschule Düsseldorf
Seite 31
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Ereignisse
 Entstehung von Ereignissen
 Ereignisse entstehen bei Interaktion des Anwenders mit dem Programm
 Beispiele hierfür: Button drücken, Fenster schließen oder Maus bewegen
 Verarbeitung von Ereignissen
 Betriebssystem nimmt die Ereignisse auf und formt hieraus Nachrichten
 Versenden der Nachrichten an alle Objekte mit "angemeldetem Interesse"
Programm
Taste gedrückt
Mausbewegung
Maustaste gedrückt
Texteingabe
Ereignis
Rollbalken betätigen
Fenster minimieren
etc.
FH D
Fachhochschule Düsseldorf
Seite 32
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Event-Modell
 Quelle und Empfänger
 Ereignisbehandlung besteht aus Ereignis-Quelle und Ereignis-Empfänger
 Quellen sind die GUI-Komponenten, Empfänger die so genannten Listener
 Ereignis-Behandlung
 Interessierte Objekte melden Interesse an Ereignis-Quelle an (Registrierung)
 Ereignis-Quelle informiert angemeldete Objekte über Eintreten des Events
Objekt A
Ereignis-Quelle
Registrierung für
Benachrichtigung über
einen bestimmten Event
das Eintreten des Events
Objekt B
Ereignis-Empfänger
Bearbeitung des Events
(Event-Listener)
FH D
Fachhochschule Düsseldorf
Seite 33
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Event-Modell implementieren (Schritt 1 von 2)
 Event-Listener erstellen (1a)
 Event-Listener ist die Klasse, die das Listener-Interface implementiert
–
–
Interface ist vergleichbar mit einem Aufkleber "Ich verfüge über bestimmte Methoden"
Bezogen auf einen Listener: "… Methode für die Bearbeitung des jeweiligen Events"
 Teilweise definiert ein Interface gleich mehrere Methoden (bzw. Events)
–
–
–
MouseListener beispielsweise definiert alle statischen Ereignisse einer Maus
Drücken der Maus, Loslassen, etc.; jedes Ereignis entspricht einer Methode
Grundsätzlich sind alle Methoden, die ein Interface beschreibt, zu implementieren
 Event-Handler einfügen (1b)
 Event-Handler sind die Methoden, die letztendlich die Events bearbeiten (s.o.)
 Listener-Interface (s.o.) gibt an, welche Methoden zu implementieren sind
Jedes Ereignis, bzw. jede
Gruppe von Ereignissen, hat
ihren eigenen Listener!
(Interface und Methoden)
FH D
Fachhochschule Düsseldorf
Seite 34
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Event-Modell implementieren (Schritt 2 von 2)
 Event-Source bestimmen (2a)
 Welches ist das Objekt, das das Ereignis liefern soll?
 Bei diesem Objekt ist der Event-Listener zu registrieren!
 Event-Listener registrieren (2b)
 Registrierung erfolgt durch Aufruf der Methode add<x>Listener()
–
–
Botschaft wird an das Objekt gesendet, das das Ereignis liefern soll
Voraussetzung: "Eigene Klasse" wurde von der Klasse Component abgeleitet
 Registriert wird das Objekt, das das Ereignis bearbeitet (siehe Schritt 1)
Jedes Ereignis, bzw. jede
Gruppe von Ereignissen, hat
ihre eigene
Registrierungs-Methode!
FH D
Fachhochschule Düsseldorf
Seite 35
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Event-Paket
 Java-Paket "java.awt.event"
 Beinhaltet alle Listener-Interfaces und Klassen; Paket ist zu importieren
 Listener bzw. Klassen "in Orange" werden nachfolgend vorgestellt
Interfaces (Auszug)
Event
Listener
Klassen (Auszug)
Action
Listener
Component
Event
Window
Listener
Input
Event
…
Mouse
Listener
AWT
Event
Key
Event
Window
Event
Action
Event
Container
Event
Mouse
Event
Quelle: http://download.oracle.com/javase/6/docs/api/java/awt/event/package-summary.html
FH D
Fachhochschule Düsseldorf
Seite 36
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Aktions-Ereignis
 Aktions-Ereignis
 Aktions-Ereignisse entstehen beispielsweise bei Klick auf einen Button
 Auch der Klick auf einen Menü-Eintrag erzeugt ein Aktions-Ereignis
 Interface und Methoden im Überblick
Event-Typ
Aktions-Ereignis
(Button, Menüs)
Listener-Interface
ActionListener
Listener-Methoden
actionPerformed (ActionEvent e)
 Objekt ActionEvent




Objekt ActionEvent enthält die Beschriftung des Buttons bzw. des Menü-Eintrags
Beschriftung kann ausgelesen und weiter verarbeitet werden
Auslesen des Strings: z.B. String bx = e.getActionCommand()
Ausgabe des Strings: z.B. System.out.println("Button = " + bx)
FH D
Fachhochschule Düsseldorf
Seite 37
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Aktions-Ereignis
 Beispiel
 GUI mit 2 Buttons; Ausgabe der im ActionEvent übermittelten Beschriftung
public class meinFenster extends Frame
{
meinFenster()
{
setLayout(new FlowLayout(FlowLayout.CENTER, 20,20));
Button but_ja
= new Button("Ja"); add(but_ja);
Button but_nein = new Button("Nein"); add(but_nein);
ButtonBearbeitung bb = new ButtonBearbeitung();
but_ja.addActionListener(bb);
but_nein.addActionListener(bb);
}
class ButtonBearbeitung implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String bx = e.getActionCommand();
// Command-String holen
System.out.println("Button = " + bx); // String ausgeben
}
}}
// aus Platzgruenden
FH D
Fachhochschule Düsseldorf
Seite 38
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Maus-Ereignis
 Maus-Ereignis
 Maus-Ereignisse entstehen z.B. bei Drücken oder Loslassen der Maustaste
 Auch Bewegungen der Maus mit oder ohne gedrückter Maustaste sind Events
 Interface und Methoden im Überblick
Event-Typ
Listener-Interface
Listener-Methoden
Maus-Ereignis
MouseListener
mouseClicked(MouseEvent e)
mouseEntered(MouseEvent e)
mouseExited(MouseEvent e)
mousePressed(MouseEvent e)
mouseReleased(MouseEvent e)
Maus-Bewegungs-Ereignis
MouseMotionListener
mouseDragged(MouseEvent e)
mouseMoved(MouseEvent e)
 Objekt MouseEvent
 Objekt MouseEvent liefert u.a. Koordinatenwerte des Klicks relativ zum Ursprung
FH D
Fachhochschule Düsseldorf
Seite 39
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Maus-Ereignis
 Beispiel
 Mausbewegung bei gedrückter Maustaste; Zählen und Ausgabe der Events und
 Besonderheit: MouseMotionListener definiert mehr als eine Methode
–
–
Event-Listener muss alle Methoden (zwei Methoden in diesem Fall) implementieren
Nicht benötigte Methode ist als leere Methode (d.h. ohne Aktivitäten) zu definieren
class Klasse_B implements MouseMotionListener
{
int i;
public void mouseMoved(MouseEvent e)
{
// keine Bearbeitung
}
// Methode ohne Bearbeitung
public void mouseDragged(MouseEvent e) // Methode mit Bearbeitung
{
// Bearbeitung des Events
System.out.print("Ereignis Nr." + (i++));
}
}
FH D
Fachhochschule Düsseldorf
Seite 40
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Fenster-Ereignis
 Fenster-Ereignis
 Fenster-Ereignisse entstehen bei Zustandsänderungen des Fensters
 Zustandsänderungen entstehen u.a. beim Ikonisieren oder Schließen
 Interface und Methoden im Überblick
Event-Typ
Fenster-Ereignis
Listener-Interface
WindowListener
Listener-Methoden
windowActivated(WindowEvent e)
windowClosed(WindowEvent e)
windowClosing(WindowEvent e)
windowDeactivated(WindowEvent e)
windowDeiconified(WindowEvent e)
windowGainedFocus(WindowEvent e)
windowIconified(WindowEvent e)
windowLostFocus(WindowEvent e)
windowOpened(WindowEvent e)
windowStateChanged(WindowEvent e)
 Objekt WindowEvent
 Objekt WindowEvent enthält weitere ("eher unbedeutende") Infos zum Event
FH D
Fachhochschule Düsseldorf
Seite 41
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Fenster-Ereignis
 WindowListener
 WindowListener hat insgesamt 7 Methoden (Java 1.4: 10 Methoden)
 WindowListener Klasse muss alle 7 bzw. 10 Methoden implementieren
 WindowAdapter-Klasse
 Bei Fokussierung auf einen Event bleiben die restlichen Methoden leer
 Aufwand für eine vollständige Implementierung recht hoch
 Adapter-Klasse definiert alle Methoden als so genannte leere Methoden
–
–
Event-Listener muss nicht zwingend das Interface implementieren
Event-Listener kann statt dessen auch von der Adapter-Klasse abgeleitet werden
 Vorteil: Lediglich die benötigte Methode muss definiert (überschrieben) werden
FH D
Fachhochschule Düsseldorf
Seite 42
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Fenster-Ereignis
 Beispiel
 Klick auf den Schließ-Button eines Fensters; Schließen des Fensters
import java.awt.*;
import java.awt.event.*;
class meinFenster extends Frame
{
meinFenster()
{
FensterBehandlung wB = new FensterBehandlung();
this.addWindowListener(wB);
}
class FensterBehandlung extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
System.out.println("Fenster wird geschlossen...");
}
}
}
FH D
Fachhochschule Düsseldorf
Seite 43
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Übersicht
Einführung
 AWT
AWT-Paket
Container
Komponenten
Layout-Manager
Event-Handling
 Ausblick
FH D
Fachhochschule Düsseldorf
Seite 44
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Ausblick
 Grafische Benutzeroberfläche mit Swing
FH D
Fachhochschule Düsseldorf
Seite 45
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Das war's - für dieses Jahr…
Ich wünsche Ihnen
ein schönes und
besinnliches
Weihnachtsfest.
***
Genießen Sie die
vorlesungsfreie Zeit
und kommen Sie gut
ins neue Jahr 2013!
***
Wir sehen uns
wieder am
07. Jan 2013 (P)
09. Jan 2013 (VL/P)
© achim rosenthal - Fotolia.com
© Alexey Bannykh - Fotolia.com
FH D
Fachhochschule Düsseldorf
Seite 46
Informatik für Ingenieure WS 2012/13
FB 5
Fachbereich Medien
Herunterladen