Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Java: Programmierung grafischer Oberflächen

Ähnliche Präsentationen


Präsentation zum Thema: "Java: Programmierung grafischer Oberflächen"—  Präsentation transkript:

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

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

4 Grafische Benutzeroberflächen - Bibliotheken in Java
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! Nötige „Import-Anweisungen: import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; . . .

5 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 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 Grafische Benutzeroberflächen - Kombination von Layouts mit JPanel
ContentPane mit BorderLayout (hier: West, Center, South) JPanel mit vertikalem BoxLayout JPanel mit horizontalem BoxLayout

8 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 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 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 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 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 Übung

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

16 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 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 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 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 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 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 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 Übung


Herunterladen ppt "Java: Programmierung grafischer Oberflächen"

Ähnliche Präsentationen


Google-Anzeigen