1 / 28

Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch

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

ziazan
Download Presentation

Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Java – SwingVortrag von Raphaela Wrede und Anja Jentzsch • Gliederung: • Einleitung • Vergleich von AWT und Swing • Container • Applikationsgerüst / Event Listener • Widgets • Beispielprogramm

  2. 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

  3. 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

  4. 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)

  5. 2. Vergleich von AWT und Swing • Gliederung der Swing-Elemente in: • Kontrollelemente/Komponenten • Container • LayoutManager • Events

  6. 2. Vergleich von AWT und Swing AWT

  7. 2. Vergleich von AWT und Swing Swing

  8. 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

  9. 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

  10. 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

  11. 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: }

  12. 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

  13. 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

  14. 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");

  15. 5. Widgets 1 JScrollPane: JTextPane: JPasswordField: JEditorPane:

  16. 5. Widgets 2 JScrollBar: JProgressBar: JSlider: JComboBox:

  17. 5. Widgets 3 JList: JList mit Grafiken: JMenu:

  18. 5. Widgets 4 JPopupMenu: JSeperator: JTree / JSplitPane: BoxLayout:

  19. 5. Widgets 4 JTabbedPane: JColorChooser:

  20. 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);

  21. 6. BeispielprogrammJButton • JButton: • sendet ActionEvent beim Drücken • JButton b1 = new JButton("Metal"); • b1.addActionListener(this); • //zum JPanel hinzufügen • aPanel.add(b1);

  22. 6. BeispielprogrammToolTips & HotKeys • JToolTip: • Alle Komponenten können kontextsensitive Hinweise anzeigen • b1.setToolTipText("Auf Metal umstellen"); • HotKey / Mnemonic: • Alt + HotKey • b1.setMnemonic('m');

  23. 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());

  24. 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);

  25. 6. BeispielprogrammJFileChooser • JFileChooser: • zur Dateiauswahl • JFileChooser fc = new JFileChooser(); • fc.setCurrentDirectory(new File("C:\\Programme")); • fc.showOpenDialog(this);

  26. 6. BeispielprogrammMouseListener / MouseMotionListener mouseEntered(MouseEvent e) mousePressed(MouseEvent e) mouseClicked(MouseEvent e) mouseExited(MouseEvent e) mouseReleased(MouseEvent e)

  27. 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);

  28. Tutorials http://java.sun.com/docs/books/tutorial/uiswing http://www.galileocomputing.de/openbook/javainsel/java-16.htm

More Related