Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

FH-Hof Java: Programmierung grafischer Oberflächen Richard Göbel.

Ähnliche Präsentationen


Präsentation zum Thema: "FH-Hof Java: Programmierung grafischer Oberflächen Richard Göbel."—  Präsentation transkript:

1 FH-Hof Java: Programmierung grafischer Oberflächen Richard Göbel

2 FH-Hof Grafische Benutzeroberflächen - 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 FH-Hof Unterklasse der Klasse JFrame als Hauptfenster einer Anwendung Komponenten werden in den ContentPane eingefügt WESTCENTER SOUTH Anordnung der Komponenten mit Hilfe eines Layout Manager Einfügen der Komponenten entsprechend des gewählten Layouts Grafische Benutzeroberflächen - Konzepte JLabelJTextFieldJListJButton Definition von Event Listener und Zuordnung zu Komponenten ActionHandler ListSelection Listener

4 FH-Hof Grafische Benutzeroberflächen - 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 FH-Hof Grafische Benutzeroberflächen - Erzeugung eines Windows 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 FH-Hof Grafische Benutzeroberflächen - Wahl eines geeigneten Layouts 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 FH-Hof ContentPane mit BorderLayout (hier: West, Center, South) JPanel mit vertikalem BoxLayout Grafische Benutzeroberflächen - Kombination von Layouts mit JPanel JPanel mit horizontalem BoxLayout

8 FH-Hof Grafische Benutzeroberflächen - Definition der Komponenten als Attribute der Klasse class VorlesungEditor 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 FH-Hof Grafische Benutzeroberflächen - Beispiel: Bereiche mit horizontalem BoxLayout 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 FH-Hof Grafische Benutzeroberflächen - Beispiel: Bereiche mit verschiedenen BoxLayouts 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);

11 FH-Hof Grafische Benutzeroberflächen - 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 FH-Hof Grafische Benutzeroberflächen - 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 FH-Hof Übung

14 FH-Hof Grafische Benutzeroberflächen - 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 FH-Hof Grafische Benutzeroberflächen - Beispiel für einen ActionListener class SpeichernListener implements ActionListener { public void actionPerformed(ActionEvent e) {... } }); butSpeichern.addActionListener( new SpeichernListener());

16 FH-Hof Grafische Benutzeroberflächen - 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 FH-Hof Grafische Benutzeroberflächen - 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 FH-Hof Grafische Benutzeroberflächen - 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 FH-Hof Grafische Benutzeroberflächen - 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 FH-Hof Grafische Benutzeroberflächen - 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 FH-Hof Grafische Oberflächen - 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 FH-Hof Grafische Oberflächen - 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 FH-Hof Übung


Herunterladen ppt "FH-Hof Java: Programmierung grafischer Oberflächen Richard Göbel."

Ähnliche Präsentationen


Google-Anzeigen