Sitzung 7

Werbung
Praktikum
Entwicklung und Einsatz
von Geosoftware I
•
Sitzung 7: User Interfaces in Java
Sommersemester 2004
Jan Drewnak
15.06.2004
Sitzung 7
Input/Output in Java
• View und Controller der GUI-Komponenten
erscheinen dem Anwender als Einheit
• package java.io: allg. Datenströme
• package java.awt: alte GUI-Komponenten
(“abstract window toolkit“)
• package javax.swing: neue GUI-Komponenten
• package java.awt.event: Event-Handling
15.06.2004
User Interfaces in Java
GUI-Konzepte in Java
• Container (Frame, Panel, Window):
nehmen alle Komponenten auf
sind selbst Komponenten, können also verschachtelt werden
sind für Darstellung der Components zuständig
• Components:
Steuerelemente (Buttons, Menus & MenuItems)
Editierbare Informationen (TextFields, TextAreas)
Nicht-editierbare Informationen (Lists, CheckBoxes, Choices)
Zeichenflächen (Canvas)
• LayoutManager (FlowLayout, GridLayout,...):
werden Containern zugewiesen
sind für die Anordnung der Components zuständig
• EventHandling-Klassen (Listener, Events):
Interaktion des AWT-Threads mit dem restlichen Programm
15.06.2004
User Interfaces in Java
Swing Components
Top Level Container
Intermediate Container
JFrame.getContentPane()
Components
15.06.2004
User Interfaces in Java
Swing Components
Tutorial
15.06.2004
User Interfaces in Java
Beispiel für eine GUI mit Swing
import …
class GISFrame extends JFrame {
GISFrame(String s) {
super(s);
// get Container
Container contentPane = getContentPane();
// use a layout
contentPane.setLayout (new GridLayout(0,1));
// create & add atomic component:
JButton button1 = new JButton("click1");
contentPane.add(button1);
// Menu is set directly to the frame:
JMenuBar mBar = new JMenuBar();
JMenu fileMenu = new JMenu("File");
JMenuItem itemNew = new JMenuItem("New");
fileMenu.add(itemNew);
mBar.add(fileMenu);
setJMenuBar(mBar);
}
}
15.06.2004
User Interfaces in Java
Beispiel für eine GUI mit Swing
public class TestGUI {
public static void main(String[] args) {
GISFrame testFrame = new GISFrame("TestGUI");
testFrame.pack();
testFrame.setVisible(true);
}
}
15.06.2004
User Interfaces in Java
Beispiel für eine GUI mit Swing
15.06.2004
User Interfaces in Java
Java Event Handling
• Die Art der Behandlung der typischen Events ist durch
entsprechende AWT-Interface-Klassen vorgegeben
(MouseListener, TextListener. Hier wird also
dynamische Bindung intensiv genutzt.
• Für die eigenen Event-Behandlungen müssen diese
Interfaces implementiert werden.
• Adapter-Klassen sind Hilfsklassen, die ein StandardVerhalten definieren und für eigene Event-Behandlungen
spezialisiert werden können
15.06.2004
User Interfaces in Java
Java Event Handling – Prinzip
WindowListener
MouseListener
1. Betriebssystem sendet ein Ereignis
(Mausklick links, Enter-Taste, Fenster
schließen...) an die aktuell fokussierte
Anwendung (unser Java-Programm)
2. Anwendung sendet das Ereignis an
die betroffene Komponente weiter
(Button, MenuBar, ...)
3. Komponente informiert alle
registrierten Listener über das
Ereignis
15.06.2004
User Interfaces in Java
KeyListener
Die Listener-Klassen einer
Komponente fangen Events
auf und reagieren auf sie
Java Event Handling
• Ein Listener für einen Button:
class GISButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println("test") ;
}
}
…
// und so wird dieser im Frame an den Button gehängt:
button1.addActionListener(new GISButtonListener());
…
• Listener werden idR. als interne Klassen von Frames
realisiert.
15.06.2004
User Interfaces in Java
Java Event Handling
• Ein Listener für das Schließen des Fensters:
class GISWindowListener extends WindowAdapter {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
…
// und so wird dieser an den Frame gehängt:
testFrame.addWindowListener(new GISWindowListener());
…
• Einsatz von Adaptern erspart die sonst notwendige
Implementierung des Interfaces.
15.06.2004
User Interfaces in Java
Zu Aufgabe 5
• Bilden Sie 2-er Gruppen
• Zusammenführen der TestGUI
• Überlegen Sie genau, wie das Design der
Klasse Model aussehen muss – dokumentieren
Sie den Code ausreichend !
Das Design der Klasse Model (= die Methodensignaturen und Attribute) sollte in der nächsten
Sitzung „stehen“.
• In der nächsten Aufgabe wird dann das
fehlende V in MVC ergänzt…
15.06.2004
User Interfaces in Java
Herunterladen