Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Hansl Schräder Geändert vor über 8 Jahren
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
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.