Grafische Benutzeroberflächen in Java

Werbung
Grafische Benutzeroberflächen in Java
Gian Perrone
02. Mai 2013
Inhalt
Einführung
Toolkits
Swing
Live-Demo
Literatur
GUIs vs. CLIs
I
GUI (Graphical User Interface)
I
I
Tendenziell einfachere Bedienung
CLI (Command Line Interface)
I
I
I
Einfacher automatisierbar
Für erfahrene Benutzer produktiver
Aber: Steilere Lernkurve, für Spiele i.A. ungeeignet
Events
I
CLIs: Code läuft von oben nach unten durch
I
GUI-Programmierung ist eventorientiert
I
Zu jedem Event (z.B. Klick auf Button, Tastendruck)
registriert man Listener
I
Eine Nachrichtenschleife fragt die Hostumgebung nach
aufgetretenen Events und ruft Listener auf
I
Beispiel (SWT):
while(!shell.isDisposed())
if(!display.readAndDispatch())
display.sleep();
Toolkits
I
Widgets sind Bedienelemente, z.B. Buttons, Textfelder, aber
auch Frames (Fenster)
I
Toolkits (engl. für Werkzeugsatz) sind Sammlungen von
nützlichen Klassen
I
Window Toolkits sind Bibliotheken, die Widgets und
umgebende Logik (Events, etc.) enthalten
AWT
I
Abstract Window Toolkit
I
Ab 1995 mit Java 1.0 ausgeliefert
I
“Heavyweight” Toolkit: Benutzt native Widgets
I
Enthält nur den kleinsten gemeinsamen Nenner, z.B. keine
Progress Bar, keine Tabellen
I
Daher eher für einfache GUIs geeignet
I
Thread-safe: Methoden können aus jedem Thread einfach
aufgerufen werden
I
Subtile Unterschiede zwischen Hostumgebungen: Write Once,
Run Test Everywhere
Swing
I
Ab 1998 mit Java 1.2 ausgeliefert
I
Baut auf dem AWT-Gerüst auf
I
“Lightweight” Toolkit: Widgets in Java programmiert
I
Für das klassische Aussehen von Java-GUIs verantwortlich
I
Hat zum Ruf beigetragen, dass Java langsam sei
I
Pluggable Look-and-Feels emulieren Aussehen der
Hostumgebung
I
Nicht thread-safe
SWT
I
2001 für Eclipse entwickelt
I
Benutzt native Widgets wenn möglich und Java-Widgets wenn
nötig
I
Sehr mächtig und performant
I
Muss nachinstalliert werden, eigenes JAR für jedes
Betriebssystem
I
Auch WOTE, aber i.A. sehr portabel
I
Nicht thread-safe
Klassenstruktur
Widgets (1)
I
JFrame
I
JDialog
I
JFileChooser
Widgets (2)
I
JLabel
I
JTextField
I
JPasswordField
I
JTextArea
Widgets (3)
I
JButton
I
JCheckBox
I
JRadioButton
Layout Manager
I
Widgets werden in Containern mit Layout Managern
angeordnet
I
FlowLayout
I
GridLayout
I
GridBagLayout
Live-Demo
Literatur
I
http://docs.oracle.com/javase/tutorial/ui/
I
http://docs.oracle.com/javase/tutorial/uiswing/
I
http://docs.oracle.com/javase/tutorial/2d/
I
Live-Demo auf der Seite zur Vorlesung
Herunterladen