Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch Gliederung: 1.Einleitung 2.Vergleich von...
-
Upload
sascha-angermeier -
Category
Documents
-
view
104 -
download
0
Transcript of Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch Gliederung: 1.Einleitung 2.Vergleich von...
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: JTextPane:
JEditorPane:JPasswordField:
5. Widgets 2
JScrollBar: JProgressBar:
JComboBox:JSlider:
5. Widgets 3
JList:
JMenu:
JList mit Grafiken:
5. Widgets 4
JPopupMenu:
JTree / JSplitPane: BoxLayout:
JSeperator:
5. Widgets 4
JTabbedPane:
JColorChooser:
6. BeispielprogrammJTabbedPane
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. BeispielprogrammJButton
JButton:
• sendet ActionEvent beim Drücken
JButton b1 = new JButton("Metal");
b1.addActionListener(this);
//zum JPanel hinzufügen
aPanel.add(b1);
6. BeispielprogrammToolTips & HotKeys
JToolTip:
• Alle Komponenten können kontextsensitive Hinweise anzeigen
b1.setToolTipText("Auf Metal umstellen");
HotKey / Mnemonic:
• Alt + HotKey
b1.setMnemonic('m');
6. BeispielprogrammPluggable 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. BeispielprogrammJOptionPane
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. BeispielprogrammJFileChooser
JFileChooser:
• zur Dateiauswahl
JFileChooser fc = new JFileChooser();
fc.setCurrentDirectory(new File("C:\\Programme"));
fc.showOpenDialog(this);
6. BeispielprogrammMouseListener / MouseMotionListener
mouseEntered(MouseEvent e)
mousePressed(MouseEvent e)
mouseClicked(MouseEvent e)
mouseExited(MouseEvent e)
mouseReleased(MouseEvent e)
6. BeispielprogrammJTree
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