Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch

Werbung
Java – Swing
Vortrag von Raphaela Wrede und Anja Jentzsch
Gliederung:
1. Einleitung
2. Vergleich von AWT und Swing
3. Container
4. Applikationsgerüst / Event Listener
5. Widgets
6. Beispielprogramm
1. Einleitung
-
bei den ersten Java-Versionen Beschwerden über
das AWT
-
Swing ist effektive Antwort auf diese Kritik 
Weiterentwicklung des AWT
•
Swing ist Teil der JFC (Java Foundation
Classes)

neue Bibliothek mit ausgefeiltem System zur
Erstellung grafischer Benutzerschnittstellen/ oberflächen

die Designstategie Model-View-Controller
(MVC) wurde benutzt
2. Vergleich von AWT und Swing
Vorteile von Swing:
•
wichtigstes Feature: Pluggable Look-And-Feel
•
Swing-Komponenten sind komplett in Java
implementiert  bessere Kompatibilität zwischen
den Programmen über unterschiedliche
Plattformen hinweg
•
Swing hat doppelt so viele Komponenten wie das
AWT  komfortableres Programmieren, viele
sog. „widgets“ wie z.B. Standarddialoge
2. Vergleich von AWT und Swing
Wichtige Merkmale:
•
zu jeder AWT-Komponente des AWT gibt es
entsprechende Swing-Komponenten, diese
beginnen mit J- z.B. JButton statt Button
•
zusätzlich ein neues Set an Komponenten
•
Swing-Komponenten sind alle Subklassen der
Klasse Jcomponent
•
alle Elemente von Swing sind Bestandteil des
Paketes javax.swing
•
Vererbungsunterschiede zwischen AWT und
Swing (siehe Diagramm)
2. Vergleich von AWT und Swing
Gliederung der Swing-Elemente in:
1. Kontrollelemente/Komponenten
2. Container
3. LayoutManager
4. Events
2. Vergleich von AWT und Swing
AWT
2. Vergleich von AWT und Swing
Swing
3. Container
-
Container Klassen dienen dazu, Komponenten zu
gruppieren, anzuordnen und als eine einzelne
Einheit zu behandeln
-
zur Anordnung der Elemente am Bildschirm hat
jeder Container einen Layout Manager
zugeordnet
-
Swing unterscheidet 2 Klassen von Containern:
•
Top-level Container
•
Intermediate-level Container
3. Container
Top-Level Container
•
JFrame: Klasse für ein Fenster mit Rahmen, Titel
und Icons zum Schließen des Fensters
•
JDialog: Klasse für ein sehr allgemeines
Dialogfenster
•
JApplet: Klasse für Applets
-
jedes Programm, welches Swing für das GUI
verwendet, hat mindestens einen top-level
Container -> Wurzel der Containment-Hierarchie
3. Container
Intermediate-level Container
•
JPanel: wichtigste und flexibelste Panel-Klasse
•
JScrollPane: ähnl. JPanel mit Scrollbars
•
JTabbedPane: unterstützt Darstellung mehrerer
Panels, wobei jeweils nur einer ausgewählt ist
•
JToolBar: enthält eine Gruppe von Elementen in
einer Zeile oder Spalte
-
intermediate-level Container dienen zur
Gruppierung und Anordnung von Elementen
4. Applikationsgerüst
1: import java.awt.event.*;
2: import javax.swing.*;
3:
4: public class Framework extends JFrame {
5:
public Framework() {
6:
super("Application Title");
7:
// Hier die Komponenten einfügen
8:
}
9:
10:
public static void main(String[] args) {
11:
JFrame frame = new Framework();
12:
13:
WindowListener l = new WindowAdapter() {
14:
public void windowClosing(WindowEvent e)
{
15:
System.exit(0);
16:
}
17:
};
18:
frame.addWindowListener(l);
19:
20:
frame.setVisible(true);
21:
}
22: }
4. Event Listener
•
•
•
•
•
•
•
ActionListener: Aktionsereignisse, durch Benutzer
ausgelöst
AdjustmentListener
FocusListener
ItemListener
KeyListener: Tastaturereignisse; werden erzeugt,
wenn Benutzer Text über die Tastatur eingibt
MouseListener: Mausereignisse (bei Mausklick,
Betreten oder Verlassen einer Komponente)
MouseMotionListener: Mausereignisse bei Bewegung
der Maus über eine Komponente
WindowListener: Ereignisse, die von Fenstern
erzeugt werden, wenn sie maximiert, minimiert,
verschoben oder geschlossen werden
4. Event Listener
-
Paket java.awt.event beinhaltet alle Event Listener
-
die folgende Klasse ist so deklariert, dass sie sowohl
Aktions- als auch Textereignisse behandeln kann:
public class Suspense extends JFrame
implements ActionListener, TextListener {
// ...
}
-
es muß die Methode addActionListener() für jede
Komponente aufgerufen werden, die ein
Aktionsereignis erzeugt
-
erst einer Komponente Listener hinzufügen und alle
anderen Konfigurationen vornehmen, bevor diese in
irgendeinen Container einfügt wird
4. Event Listener
-
getSource()-Methode verwenden, um das Objekt zu
ermitteln, das ein Ereignis erzeugt hat
-
getActionCommand() verwenden, um mehr
Informationen über die Quelle eines Ereignisses zu
erhalten
JButton sort = new JButton("Sort");
sort.setActionCommand("Sort Files");
5. Widgets 1
JScrollPane:
JPasswordField:
JTextPane:
JEditorPane:
5. Widgets 2
JScrollBar:
JSlider:
JProgressBar:
JComboBox:
5. Widgets 3
JList:
JMenu:
JList mit Grafiken:
5. Widgets 4
JPopupMenu:
JTree / JSplitPane:
JSeperator:
BoxLayout:
5. Widgets 4
JTabbedPane:
JColorChooser:
6. Beispielprogramm
JTabbedPane
JTabbedPane:
•
Teilung der Benutzerschnittstelle in gleich
große Fenster
•
Auswahl über Reiter (Tabs)
JTabbedPane contentPanel= new JTabbedPane();
cp,cp1
= new JPanel();
[…]
contentPanel.add("HauptFeatures",cp);
contentPanel.add("JTree",cp1);
setContentPane(contentPanel);
6. Beispielprogramm
JButton
JButton:
•
sendet ActionEvent beim Drücken
JButton b1 = new JButton("Metal");
b1.addActionListener(this);
//zum JPanel hinzufügen
aPanel.add(b1);
6. Beispielprogramm
ToolTips & HotKeys
JToolTip:
•
Alle Komponenten können kontextsensitive
Hinweise anzeigen
b1.setToolTipText("Auf Metal umstellen");
HotKey / Mnemonic:
•
Alt + HotKey
b1.setMnemonic('m');
6. Beispielprogramm
Pluggable Look and Feel
•
Gibt die Darstellungsform der
Komponenten vor
•
Zur Laufzeit änderbar
UIManager.setLookAndFeel(„javax.swing.plaf.
metal.MetalLookAndFeel“);
UIManager.setLookAndFeel(„com.sun.java.swing
.plaf.windows.WindowsLookAndFeel“);
UIManager.setLookAndFeel(„com.sun.java.swing
.plaf.motif.MotifLookAndFeel“);
SwingUtilities.updateComponentTreeUI(this.
getContentPane());
6. Beispielprogramm
JOptionPane
JOptionPane:
•
bietet sich für typische Dialoge an
•
Meldungsarten: allgemeine Meldung,
Fehlermeldung, Informationsmledung,
Frage, Warnung
JOptionPane.showMessageDialog(cp,
"Mac Benutzeroberfläche ist auf Windows
nicht verfügbar!",
"Mac-UI",
JOptionPane.ERROR_MESSAGE);
6. Beispielprogramm
JFileChooser
JFileChooser:
•
zur Dateiauswahl
JFileChooser fc = new
JFileChooser();
fc.setCurrentDirectory(new
File("C:\\Programme"));
fc.showOpenDialog(this);
6. Beispielprogramm
MouseListener / MouseMotionListener
mouseEntered(MouseEvent e)
mousePressed(MouseEvent e)
mouseClicked(MouseEvent e)
mouseExited(MouseEvent e)
mouseReleased(MouseEvent e)
6. Beispielprogramm
JTree
JTree tree = new JTree();
DefaultMutableTreeNode root = new
DefaultMutableTreeNode("Menü");
DefaultMutableTreeNode swing = new
DefaultMutableTreeNode("Swing");
[…]
DefaultMutableTreeNode jbutton = new
DefaultMutableTreeNode(„JButton“);
[…]
root.add(swing);
swing.add(jbutton);
Tutorials
http://java.sun.com/docs/books/tutorial/uiswing
http://www.galileocomputing.de/openbook/javainsel/java-16.htm
Herunterladen