Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch Gliederung: 1.Einleitung 2.Vergleich von...

28
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

Transcript of Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch Gliederung: 1.Einleitung 2.Vergleich von...

Page 1: Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch Gliederung: 1.Einleitung 2.Vergleich von AWT und Swing 3.Container 4.Applikationsgerüst / Event.

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

Page 2: Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch Gliederung: 1.Einleitung 2.Vergleich von AWT und Swing 3.Container 4.Applikationsgerüst / Event.

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

Page 3: Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch Gliederung: 1.Einleitung 2.Vergleich von AWT und Swing 3.Container 4.Applikationsgerüst / Event.

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

Page 4: Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch Gliederung: 1.Einleitung 2.Vergleich von AWT und Swing 3.Container 4.Applikationsgerüst / Event.

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)

Page 5: Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch Gliederung: 1.Einleitung 2.Vergleich von AWT und Swing 3.Container 4.Applikationsgerüst / Event.

2. Vergleich von AWT und Swing

Gliederung der Swing-Elemente in:

1. Kontrollelemente/Komponenten

2. Container

3. LayoutManager

4. Events

Page 6: Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch Gliederung: 1.Einleitung 2.Vergleich von AWT und Swing 3.Container 4.Applikationsgerüst / Event.

2. Vergleich von AWT und Swing

AWT

Page 7: Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch Gliederung: 1.Einleitung 2.Vergleich von AWT und Swing 3.Container 4.Applikationsgerüst / Event.

2. Vergleich von AWT und Swing

Swing

Page 8: Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch Gliederung: 1.Einleitung 2.Vergleich von AWT und Swing 3.Container 4.Applikationsgerüst / Event.

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

Page 9: Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch Gliederung: 1.Einleitung 2.Vergleich von AWT und Swing 3.Container 4.Applikationsgerüst / Event.

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

Page 10: Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch Gliederung: 1.Einleitung 2.Vergleich von AWT und Swing 3.Container 4.Applikationsgerüst / Event.

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

Page 11: Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch Gliederung: 1.Einleitung 2.Vergleich von AWT und Swing 3.Container 4.Applikationsgerüst / Event.

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

Page 12: Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch Gliederung: 1.Einleitung 2.Vergleich von AWT und Swing 3.Container 4.Applikationsgerüst / Event.

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

Page 13: Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch Gliederung: 1.Einleitung 2.Vergleich von AWT und Swing 3.Container 4.Applikationsgerüst / Event.

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

Page 14: Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch Gliederung: 1.Einleitung 2.Vergleich von AWT und Swing 3.Container 4.Applikationsgerüst / Event.

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

Page 15: Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch Gliederung: 1.Einleitung 2.Vergleich von AWT und Swing 3.Container 4.Applikationsgerüst / Event.

5. Widgets 1

JScrollPane: JTextPane:

JEditorPane:JPasswordField:

Page 16: Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch Gliederung: 1.Einleitung 2.Vergleich von AWT und Swing 3.Container 4.Applikationsgerüst / Event.

5. Widgets 2

JScrollBar: JProgressBar:

JComboBox:JSlider:

Page 17: Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch Gliederung: 1.Einleitung 2.Vergleich von AWT und Swing 3.Container 4.Applikationsgerüst / Event.

5. Widgets 3

JList:

JMenu:

JList mit Grafiken:

Page 18: Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch Gliederung: 1.Einleitung 2.Vergleich von AWT und Swing 3.Container 4.Applikationsgerüst / Event.

5. Widgets 4

JPopupMenu:

JTree / JSplitPane: BoxLayout:

JSeperator:

Page 19: Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch Gliederung: 1.Einleitung 2.Vergleich von AWT und Swing 3.Container 4.Applikationsgerüst / Event.

5. Widgets 4

JTabbedPane:

JColorChooser:

Page 20: Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch Gliederung: 1.Einleitung 2.Vergleich von AWT und Swing 3.Container 4.Applikationsgerüst / Event.

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

Page 21: Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch Gliederung: 1.Einleitung 2.Vergleich von AWT und Swing 3.Container 4.Applikationsgerüst / Event.

6. BeispielprogrammJButton

JButton:

• sendet ActionEvent beim Drücken

JButton b1 = new JButton("Metal");

b1.addActionListener(this);

//zum JPanel hinzufügen

aPanel.add(b1);

Page 22: Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch Gliederung: 1.Einleitung 2.Vergleich von AWT und Swing 3.Container 4.Applikationsgerüst / Event.

6. BeispielprogrammToolTips & HotKeys

JToolTip:

• Alle Komponenten können kontextsensitive Hinweise anzeigen

b1.setToolTipText("Auf Metal umstellen");

HotKey / Mnemonic:

• Alt + HotKey

b1.setMnemonic('m');

Page 23: Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch Gliederung: 1.Einleitung 2.Vergleich von AWT und Swing 3.Container 4.Applikationsgerüst / Event.

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

Page 24: Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch Gliederung: 1.Einleitung 2.Vergleich von AWT und Swing 3.Container 4.Applikationsgerüst / Event.

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

Page 25: Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch Gliederung: 1.Einleitung 2.Vergleich von AWT und Swing 3.Container 4.Applikationsgerüst / Event.

6. BeispielprogrammJFileChooser

JFileChooser:

• zur Dateiauswahl

JFileChooser fc = new JFileChooser();

fc.setCurrentDirectory(new File("C:\\Programme"));

fc.showOpenDialog(this);

Page 26: Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch Gliederung: 1.Einleitung 2.Vergleich von AWT und Swing 3.Container 4.Applikationsgerüst / Event.

6. BeispielprogrammMouseListener / MouseMotionListener

mouseEntered(MouseEvent e)

mousePressed(MouseEvent e)

mouseClicked(MouseEvent e)

mouseExited(MouseEvent e)

mouseReleased(MouseEvent e)

Page 27: Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch Gliederung: 1.Einleitung 2.Vergleich von AWT und Swing 3.Container 4.Applikationsgerüst / Event.

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

Page 28: Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch Gliederung: 1.Einleitung 2.Vergleich von AWT und Swing 3.Container 4.Applikationsgerüst / Event.

Tutorials

http://java.sun.com/docs/books/tutorial/uiswing

http://www.galileocomputing.de/openbook/javainsel/java-16.htm