280 likes | 458 Views
Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch. Gliederung: Einleitung Vergleich von AWT und Swing Container Applikationsgerüst / Event Listener Widgets Beispielprogramm. 1. Einleitung. bei den ersten Java-Versionen Beschwerden über das AWT
E N D
Java – SwingVortrag von Raphaela Wrede und Anja Jentzsch • Gliederung: • Einleitung • Vergleich von AWT und Swing • Container • Applikationsgerüst / Event Listener • Widgets • 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: • Kontrollelemente/Komponenten • Container • LayoutManager • Events
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: JPasswordField: JEditorPane:
5. Widgets 2 JScrollBar: JProgressBar: JSlider: JComboBox:
5. Widgets 3 JList: JList mit Grafiken: JMenu:
5. Widgets 4 JPopupMenu: JSeperator: JTree / JSplitPane: BoxLayout:
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