Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

GUI Programmierung in Java Branimir Djordjevic. GUI - Wichtige Begriffe -  Die Swing-Bibliothek in Java stellt zum Beispiel die folgenden Windows zur.

Ähnliche Präsentationen


Präsentation zum Thema: "GUI Programmierung in Java Branimir Djordjevic. GUI - Wichtige Begriffe -  Die Swing-Bibliothek in Java stellt zum Beispiel die folgenden Windows zur."—  Präsentation transkript:

1 GUI Programmierung in Java Branimir Djordjevic

2 GUI - Wichtige Begriffe -  Die Swing-Bibliothek in Java stellt zum Beispiel die folgenden Windows zur Verfügung:  JFrame für ein Hauptfenster  JDialog für ein Dialogfenster.  JApplet für eine WWW-Browser-Anwendung.  Ein ContentPane eines Windows dient zur Aufnahme von Komponenten wie Textzeilen  Anordnung mit Hilfe eines LayoutManager.  Behandlung von Ereignissen EventListener

3 GUI - Konzepte - JLabelJTextField JList JButton ActionHandler ListSelection Listener Definition von Event Listener und Zuordnung zu Komponenten

4 GUI - Bibliotheken in Java - Nötige „Import-Anweisungen: import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*;... Das Abstract Window Toolkit (AWT) ist die Basis für alle grafischen Anwendungen. Swing erweitert das AWT und enthält modernisierte Klassen für einige AWT-Klassen (J...) Achtung : Swing ist in den meisten WWW-Browsern nicht verfügbar!

5 GUI - Erzeugung eines Frames class MainWindow extends JFrame { JPanel contentPane; // Hier Deklaration aller Komponenten... public MainWindow() { contentPane = (JPanel) getContentPane(); // Hier Window aufbauen... } public static void main(String[] args) { // Hier Objekt erzeugen und Parameter setzen // zum Beispiel: MainWindow frame = new MainWindow(); frame.setTitle("Test"); frame.setSize(new Dimension(250,300)); frame.setVisible(true);}}

6 GUI - Das Layout -  FlowLayout Anordnung von links nach rechts und von oben nach unten.  BoxLayout Anordnung entweder horizontal oder vertikal.  BorderLayout Anordnung in bis zu 5 Bereichen "North", "South", "East", "West" und "Center"  GridLayout, GridBagLayout Anordnung der Komponenten in einer Matrix.  CardLayout Anordnung von Komponenten auf alternativen Darstellungsbereichen.

7 GUI - Kombination mit JPanels und Layouts -  ContentPane mit BorderLayout (hier: West, Center, South)  JPanel mit vertikalem BoxLayout  JPanel mit horizontalem BoxLayout

8 GUI - Definition - class StundenAuflistung extends JFrame { JPanel contentPane, panBezeichnung = new JPanel(), panStunden = new JPanel(), panVorlesung = new JPanel(), panButton = new JPanel(); JTextField tfBezeichnung = new JTextField(10), tfStunden = new JTextField(2); JLabel labBezeichnung = new JLabel( "Bezeichnung: " ), labStunden = new JLabel( "Stunden: " ); JButton butSpeichern = new JButton( "Speichern" ), butAbbrechen = new JButton( "Abbrechen" ); DefaultListModel dlm = new DefaultListModel(); JList auswahl = new JList(dlm);

9 GUI - Beispiel mit Horizontalem Box Layout - panBezeichnung.setLayout(new BoxLayout(panBezeichnung,BoxLayout.X_AXIS)); panBezeichnung.add( Box.createRigidArea(new Dimension(5,0))); panBezeichnung.add(labBezeichnung); panBezeichnung.add(Box.createHorizontalGlue()); tfBezeichnung.setMaximumSize(new Dimension(80,15)); panBezeichnung.add(tfBezeichnung); panStunden.setLayout(new BoxLayout(panStunden,BoxLayout.X_AXIS)); panStunden.add( Box.createRigidArea(new Dimension(5,0))); panStunden.add(labStunden); panStunden.add(Box.createHorizontalGlue()); tfStunden.setMaximumSize(new Dimension(25,15)); panStunden.add(tfStunden);

10 panVorlesung.setLayout( new BoxLayout(panVorlesung,BoxLayout.Y_AXIS)); panVorlesung.add(panBezeichnung); panVorlesung.add(panStunden); panButton.setLayout( new BoxLayout(panButton,BoxLayout.X_AXIS)); panButton.add(butSpeichern); panButton.add(Box.createHorizontalGlue()); panButton.add(butAbbrechen); GUI - Bereiche mit verschiedenen Box Layouts

11 GUI - Beispiel: Bereich mit BorderLayout contentPane = (JPanel) getContentPane(); contentPane.setLayout(new BorderLayout()); contentPane.add(auswahl, BorderLayout.WEST); contentPane.add(panVorlesung,BorderLayout.CENTER); contentPane.add(panButton,BorderLayout.SOUTH);

12 GUI- Größe von Komponenten -  Beeinflussung der Größe von Komponenten mit den folgenden Methoden:  setPreferredSize(Dimension d)  setMinimumSize(Dimension d)  setMaximumSize(Dimension d)  Nicht alle Layouts berücksichtigen diese Angaben vollständig:  vollständige Berücksichtigung durch das BoxLayout  teilweise Berücksichtigung durch das BorderLayout  keine Berücksichtigung durch das GridLayout

13 Übung

14 GUI – EventListener -  Mit einem EventListener lassen sich Aktionen für verschiedene Ereignisse zuordnen, wie zum Beispiel:  Mausklick oder Mausbewegung  Auswahl eines Elements aus einem Menü  Aktionen auf einem Window (Verschieben, Beenden)  Ein EventListener ist ein Objekt einer durch den Anwender implementierten Klasse.  Eine Klasse für einen EventListener:  stellt Methoden zur Verarbeitung von Ereignissen zur Verfügung und implementiert damit ein Interface.  wird als innere Klasse einer Window-Klasse definiert.

15 GUI - Beispiel für einen ActionListener - class SpeichernListener implements ActionListener { public void actionPerformed(ActionEvent e) {... } }); butSpeichern.addActionListener( new SpeichernListener());

16 GUI - Elemente der Definition eines Listener -  Welches Interface wird implementiert?  ActionListener,  ListSelectionListener,  WindowListener,...  Welche Methoden müssen für ein Interface implementiert werden?  ActionListener: actionPerformed(ActionEvent)  ListSelectionListener: valueChanged(ListSelectionEvent)  WindowListener: windowOpened(WindowEvent),...  Adapter statt Listener mit vordefinierten Methoden

17 GUI - Definition eines anonymen ActionListener I - butSpeichern.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Vorlesung v = (Vorlesung) auswahl.getSelectedValue(); v.setBezeichnung(tfBezeichnung.getText()); try { v.setStunden( Integer.parseInt(tfStunden.getText()));} catch (NumberFormatException ex) { tfStunden.setText(v.getStunden() + "");} } });

18 GUI - Definition eines anonymen ActionListener II - butAbbrechen.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Vorlesung v = (Vorlesung) auswahl.getSelectedValue(); tfBezeichnung.setText(v.getBezeichnung()); tfStunden.setText(v.getStunden() + ""); } });

19 GUI - Beispiel für einen ListSelectionListener - auswahl.addListSelectionListener( new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { Vorlesung v = (Vorlesung) auswahl.getSelectedValue(); tfBezeichnung.setText(v.getBezeichnung()); tfStunden.setText(v.getStunden() + ""); } });

20 GUI - Beispiel für einen WindowAdapter - public static void main(String[] args) { VorlesungEditor frame = new VorlesungEditor(); frame.setTitle("Vorlesung Editor"); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); frame.pack(); frame.setVisible(true); }

21 GUI - JList: Allgemeines -  Ein JList repräsentiert eine Auswahlliste  Eine JList enthält die auszuwählenden Elemente in einem Objekt der Klasse ListModel Konstruktor: JListModel(ListModel) Wert ändern: setSelectedValue(int) Wert abfragen: getSelectedValue() getSelectedValues() Listener: ListSelectionListener()

22 GUI - JList: Beispiel - DefaultListModel myModel = new DefaultListModel(); myModel.addElement(new Vorlesung("DBS", 4)); myModel.addElement(new Vorlesung("Java", 4));... JList myList = new JList(myModel); myList.addListSelectionListener( new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { Object[] objs = myList.getSelectedValues();... } });

23 Übung

24 Ende


Herunterladen ppt "GUI Programmierung in Java Branimir Djordjevic. GUI - Wichtige Begriffe -  Die Swing-Bibliothek in Java stellt zum Beispiel die folgenden Windows zur."

Ähnliche Präsentationen


Google-Anzeigen