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