Einführung in Swing. Graphical User Interface



Ähnliche Dokumente
Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI)

Objektorientierte Software-Entwicklung

Kap. 35 Swing: Grundlagen Kap Swing: Hauptfenster

Java I Vorlesung 11 Graphische Oberflächen mit Swing

Objektorientierte Softwareentwicklung

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik GUI-Programmierung mit Swing

Grundlagen der Programmierung APPLETS

GUI Programmierung mit JAVA Swing

NTB Druckdatum:

GUI Programmierung in Java

Objektorientierte Programmierung

Swing Lernen am Code Teil 1

Techniken der Projektentwicklung

Einstieg in die Informatik mit Java

Grafische Benutzeroberflächen mit Swing

Programmieren II. Java im Vergleich zu anderen Sprachen. Einführung: GUI. Einführung: Grafische Benutzeroberflächen. Dr.

Programmiertechnik GUI Programmierung mit Java Swing

GRAFISCHE BENUTZERSCHNITTSTELLEN

Swing Grundlagen. Andre Eichmann

Swing :Komponenten I (Teil 2)

Programmieren mit Swing

Institut für Programmierung und Reaktive Systeme. GUIs mit Swing. Markus Reschke

GUI. Programmiermethodik. Eva Zangerle Universität Innsbruck

Einführung in GUI-Programmierung. javax.swing

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 7. Grafische Benutzeroberflächen 1

Javakurs für Fortgeschrittene

Graphische Benutzungsoberflächen

...erinnern Sie sich? oopjs4b / kwhbkd4r

Ziel dieses Kapitels: Einführung in die Grundzüge der Programmierung graphischer Benutzeroberflächen (engl.: "graphical user interface", GUI) in Java

Einführung: Grafische Benutzeroberflächen. Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester / 22

5. Java Swing Grundlagen der Programmierung II (Java) Prof. Dr. Bernhard Humm Hochschule Darmstadt University of Applied Sciences Sommersemester 2006

Benutzeroberflächen. Java Teil 4

Java Lab 2006/12/13 Client

GUIs in Java und ihre Programmierung

Mensch-Maschine-Interaktion

Funktionale und Objekt-Orientierte Programmierkonzepte

Hochschule der Medien Prof. Uwe Schulz 14. Juli 2010 Klausur Informatik, EDV-Nr Seite 1 von 5. Teil 2: Aufgaben

Java GUI Entwicklung mit Swing

JAVA Oberflächen mit Swing

J.1. J.1 GUI-Programmierung in in Java Prof. Dr. Rainer Manthey Informatik II 1

Applets. Applets. Applets. Applet: Java-Programm Eingebettet in einer HTML-Seite Ausführung von einem Java-fähigen Web-Browser oder sog.

Tutorial04: Swing: Erstellen eines JFrames mit einem JSplitPane

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Swing. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

2A Basistechniken: Weitere Aufgaben

Sommersemester Implementierung III: GUI und Verhalten (Teil 2)

Java Projekt: Tic Tac Toe + GUI

Einführung in GUI-Programmierung. javax.swing

EAD II Übung 5. Graphische Benutzungsoberfläche mit BlueJ

GUI Programmierung mit javax.swing

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

GUI-Programmierung in Java

Grafikausgabe mit dem Abstract- Windowing-Toolkit. Eine Einführung

GUI-Programmierung. Teil I. Unterlagen zum Modul OOP mit Java V by MOU2/BFH-TI. Berner Fachhochschule Technik und Informatik

JButton, JCheckBox, JRadioButton. Programmieren II. Vorlesung 7. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester 2009.

Grafische Benutzeroberflächen

Swing : Komponeneten I (Teil 1) Was ist Swing?

SWT. -The Standard Widget Toolkit- Inhaltsverzeichnis. Thomas Wilhelm SWT. 1. Was ist SWT?

Excel Pivot-Tabellen 2010 effektiv

JLabel. dient zur Textanzeige. können auch Bilder anzeigen: mylabel.seticon( new ImageIcon( C:/Pfad/zum/Bild.jpg )

Vorlesung 13. Sitzung Grundlegende Programmiertechniken

Design Patterns 2. Model-View-Controller in der Praxis

Programmierkurs Java

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2

DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

Wiederholung: Objektorientierte Oberflächen-Programmierung mit Java und Swing

Java Design und Event Handling. Natascha Hoebel Professur Prof. R. V. Zicari. AWT SWING Layout Design Event Handling

Anleitung zum GUI Version 2.x

Fachhochschule Fulda Fachbereich Angewandte Informatik. Hausarbeit Seminar: Java3D. Java Layout-Manager WS 2002/2003

JAVA Oberflächen mit Swing

Vermittler (Mediator) Sabine Müller - Sven Richter - Jens Wagenbreth 03IN2-P-D

Grafische Benutzeroberflächen

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Windows Presentation Foundation (WPF) -Grundlagen -Steuerelemente. Dr. Beatrice Amrhein

Anleitung zum erstellen einer PDF-Datei aus Microsoft Word

Transkript:

Einführung in Swing Ho Ngoc Duc IFIS - Universität zu Lübeck Graphical User Interface Ein GUI-Programm beinhaltet: Graphische Darstellung der Anwendungsdaten und Interaktionsmöglichkeiten in Fenstern Steuerung der Anwendung durch Maus- und Tastaturaktionen auf GUI-Elementen in den Fenstern: Buttons, Menüs, Eingabefelder, Dialogboxen, Slider, (EventHandling) 1

Was ist SWING? SWING ist die Java Klassenbibliothek zur Entwicklung grafischer Oberflächen. Im Gegensatz zum AWT (Abstract Windowing Toolkit) nutzt SWING leichtgewichtete Komponenten (leightweight components): Abgesehen von Top-Level-Fenstern, Dialogen und grafischen Primitivoperationen werden alle GUI- Elemente von Swing selbst gezeichnet. Dynamische Umschaltung des Aussehen (Swing, Motif, Windows) => Pluggable Look-and-Feel HelloWorld mit Swing 1 import javax.swing.*; 2 public class HelloWorldSwing { 3 public static void main(string[] args) { 4 JFrame frame = new JFrame("HelloWorldSwing"); 5 final JLabel label = new JLabel("Hello World"); 6 frame.getcontentpane().add(label); 7 frame.setdefaultcloseoperation(jframe.exit_on_close); 8 frame.pack(); 9 frame.setvisible(true); 10 } 11 } Zeile 1: importiere das Swing-Paket javax.swing. Zeile 4: ein Frame ist ein Top-Level Window Zeile 5: ein JLabel ist eine primitive Komponente (component). Zeile 6: getcontentpane() gibt den Behälter (container) des Frame zurück. Zeile 7: Aktion definiert, die beim Schließen des Fensters ausgeführt wird Zeile 8: Layoutmanager des Behälters wird aktiviert, um die Komponenten im Behälter zu packen Zeile 9: die graphische Darstellung wird angestoßen. 2

Architektur einer Swing-Applikation Model-Viewer-Controller Modell : enthält die Daten des Dialogelements und speichert seinen Zustand. View : ist für die grafische Darstellung der Komponente verantwortlich. Controller : wirkt als Verbindungsglied zwischen beiden. Er empfängt Tastatur- und Mausereignisse und stößt die erforderlichen Maßnahmen zur Änderung von Model und View an. Graphische Oberfläche Top-Level-Container (JFrame, JDialog, JApplet) erzeugen. Dieser: vom Windowsystem verwaltetes Fenster, enthält Zeichenfläche Oberflächenelemente direkt in Top-Level- Container oder in andere Container (wichtig: Box, JPanel) Anordnung der Oberflächenelemente in einem Container: LayoutManaget 3

Swing Komponenten sind in einem Container enthalten sind manchmal selbst Container haben ein bestimmtes graphisches Aussehen können Text oder Graphiken zur Darstellung der Daten der Anwendung enthalten ("Model") können mit Aktionsobjekten verknüpft sein. Behandlung dieser Aktionen: Controller Swing Komponenten I JLabel JButton... JTextField JTextArea JList JToolBar JComboBox JScrollPane JSlider JToolTip JProgressBar JTree JTabbedPane JTable JSplitPane JMenu... 4

Swing Komponenten II.showMessageDialog JFrame JDialog JInternalFrame.showWarningDialog.showInputDialog JColorChooser JFileChooser.showConfirmDialog Layoutmanager I Layoutmanager organisieren die Positionierung der grafischen Elemente innerhalb der sie enthaltenden Container. Die Layoutmanger arbeiten jeweils mit einer unterschiedlichen Verteilungs-Logik. In der Regel bestimmt die Reihenfolge der Einfügung der Swingelemente auch die Anordnungsreihenfolge im Container. Es ist möglich Layoutmanager zu schachteln. Hierdurch können komplexe Anordnungen realisiert werden. Das spezielle Null-Layout erlaubt die Positionierung der Elemente durch Angabe ihre absoluten Koordinaten. 5

Layoutmanager II FlowLayout: ordnet Dialogelemente nebeneinander in einer Zeile an. Wenn keine weiteren Elemente in die Zeile passen, wird mit der nächsten Zeile fortgefahren. GridLayout: ordnet die Dialogelemente in einem rechteckigen Gitter an, dessen Zeilen- und Spaltenzahl beim Erstellen des Layoutmanagers angegeben wird. BorderLayout: verteilt die Dialogelemente nach Vorgabe des Programms auf die vier Randbereiche und den Mittelbereich des Fensters. NullLayout: erlaubt die Positionierung der Elemente durch Angabe ihrer absoluten Koordinaten Ferner: CardLayout, GridBagLayout, BoxLayout frame.setlayout( new BorderLayout( ) ); frame.add( new Button( "Norden" ), BorderLayout.NORTH ); frame.add( new Button( "Zentrum, BorderLayout.CENTER) );... FlowLayout GridLayout 6

Das Event-Modell von Swing Eine Komponente kann Ereignisse auslösen Beispiel: Button clicken, im TextField "Enter" drücken: Action-Event. Element einer Listen auswählen: Item-Event Jeder Ereignistyp durch eine Klasse repräsentiert: java.awt.event.xxxevent "Controller": Ereignisse abfangen und verarbeiten (Modell, View ändern) Event/Listener Ereignisse einer Komponente abfangen: Listener-Objekte für Ereignistyp mit Komponente registrieren: addxxxlistener Geschäftslogik: Listener-Klasse. Muß nur das geeignete Interface implementieren ActionEvent-ActionListener, KeyEvent- KeyListener, ItemEvent-ItemListener... 7

Listener-Beispiel int count = 0; JLabel l = new JLabel ("Number of clicks: "+count); JButton b = new JButton("Click me!"); b.addactionlistener(new AL()); class AL implements ActionListener() { public void actionperformed(actionevent e) { count++; l.settext("number of clicks: "+count); } } Schritte eines Swing-Programms Kreiere Komponenten Konfiguriere Komponenten Kreiere Container für Komponenten Assoziiere Layoutmanager mit Containern Füge Komponenten in Container ein Definiere Listener für zur verarbeitende GUI-Ereignisse Registriere Listener bei Komponenten Zeige die GUI 8

Dialog zur Datenbankverbindung Benötigte Komponenten Textanzeige: JLabel ("Type:", "Driver:",...) JLabel typelabel, driverlabel, urllabel, userlabel, passwordlabel; Texteingabe: JTextField, JPasswordField JTextField driverfield, urlfield, userfield; JPasswordField passwordfield; Dropdown-Liste: JComboBox JComboBox typelist; Buttons: JButton JButton ok, cancel; Evtl. Container zum Gruppieren 9

Komponenten kreieren typelabel = new JLabel("Type:"); typelist = new JComboBox(liste); typelist.seteditable(false); typelist.additemlistener(new IL()); driverlabel = new JLabel("Driver:"); urllabel = new JLabel("URL:"); userlabel = new JLabel("User:"); passwordlabel = new JLabel("Password:"); driverfield = new JTextField(30); urlfield = new JTextField(30); userfield = new JTextField(30); passwordfield = new JPasswordField(30); ok = new JButton("OK"); cancel = new JButton("Cancel"); Container für Komponenten 1. Wahl: JPanel 5 unterschiedlich lange Labels in gleich große Zellen verteilen: GridLayout JPanel labels = new JPanel(); labels.setlayout(new GridLayout(0, 1)); labels.add(typelabel); labels.add(driverlabel); labels.add(urllabel); labels.add(userlabel); labels.add(passwordlabel); 10

Layout Ähnlich: JPanel (Name: inputs) für Combo-Box und Eingabefelder; JPanel (Name: but) für beide Buttons labels und inputs horizontal verteilen, but am unteren Rand Box up = Box.createHorizontalBox(); up.add(labels); up.add(inputs); Box main = Box.createVerticalBox(); main.add(up); main.add(but); add(main); EventHandling class IL implements ItemListener { public void itemstatechanged(itemevent e) { int idx = typelist.getselectedindex(); driverfield.settext(drivers[idx]); urlfield.settext(urls[idx]); } } typelist.additemlistener(new IL()); 11

Happy coding! 12