Grafische Benutzeroberflächen mit Swing



Ähnliche Dokumente
GRAFISCHE BENUTZERSCHNITTSTELLEN

Objektorientierte Software-Entwicklung

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI)

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

Objektorientierte Programmierung

GUI Programmierung mit JAVA Swing

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

Kap. 35 Swing: Grundlagen Kap Swing: Hauptfenster

Java I Vorlesung 11 Graphische Oberflächen mit Swing

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

Benutzeroberflächen. Java Teil 4

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

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

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

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

Einführung in die Programmierung für NF. Grafische Benutzeroberflächen

2A Basistechniken: Weitere Aufgaben

GUI Programmierung in Java

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

Grundlagen der Programmierung APPLETS

Swing Lernen am Code Teil 1

Javakurs für Fortgeschrittene

Einführung in GUI-Programmierung. javax.swing

Objektorientierte Softwareentwicklung

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

NTB Druckdatum:

Java Projekt: Tic Tac Toe + GUI

Graphische Benutzungsoberflächen

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

Ereignisbehandlung 21

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

Java Lab 2006/12/13 Client

Ereignisse (Events) in Java

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

Programmiertechnik GUI Programmierung mit Java Swing

Programmieren 2 07 JavaFX-Properties und Data-Binding

Java: Vererbung. Teil 3: super()

JAVA Oberflächen mit Swing

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

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

Grafische Benutzeroberfläche mit Glade und Python

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

Ist eine Softwarekomponente, die dem Benutzer eines Computers die Interaktion mit der Maschine über grafische Symbole erlaubt

Einführung in die Programmierung für NF. Übung

Was meinen die Leute eigentlich mit: Grexit?

Drucken, GUI, Design Pattern,... PDF, Usability, Observer Pattern, MVC

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

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

GUI-Programmierung in Java

Projekt AGB-10 Fremdprojektanalyse

Java für Computerlinguisten

Kapitel 8: Grafische Benutzerschnittstellen

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Swing :Komponenten I (Teil 2)

Techniken der Projektentwicklung

Einstieg in die Informatik mit Java

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Ziele. Kapitel 8: Grafische Benutzerschnittstellen. AWT und Swing. Ziele (2)

Arrays Fortgeschrittene Verwendung

Tutorial04: Swing: Erstellen eines JFrames mit einem JSplitPane

Anleitung zum GUI Version 2.x

11. GUI-Programmierung mit SWING Überblick

Programmierkurs Java

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

WPF Steuerelemente Listbox, ComboBox, ListView,

Einführung in GUI-Programmierung. javax.swing

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Softwaretechnologie - Wintersemester 2012/ Dr. Günter Kniesel

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

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Einführung in Swing. Graphical User Interface

Funktionale und Objekt-Orientierte Programmierkonzepte

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

SEP 114. Design by Contract

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

Softwaretechnik (Medieninformatik): GUIs mit Swing Überblick

Proseminar: Website-Managment-System. NetObjects Fusion. von Christoph Feller

Sommersemester Implementierung III: GUI und Verhalten (Teil 2)

Innere Klassen in Java

Professionelle Seminare im Bereich MS-Office

Graphical User Interfaces

Google Android API. User Interface. Eine knappe Einführung

FORUM HANDREICHUNG (STAND: AUGUST 2013)

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Grafische Benutzeroberflächen

Anleitung zum erstellen einer PDF-Datei aus Microsoft Word

So erstellen Sie nützliche Beschreibungen zu Ihren Tradingdaten

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Anleitung zum Einbinden eines PotatoSystem - Musikplayers auf einer Facebook Künstlerseite

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

WebService in Java SE und EE

Objektorientierte Programmierung

WhiteStarUML Tutorial

eclipse und Komponenten

Präsentation zur Vorstellung meiner Bachelor-Arbeit beim BSE- Seminar. Vortrag von Patrick Bitterling

Transkript:

Grafische Benutzeroberflächen mit Swing KW 30, Zentralübung Informatik II 2006-07-24

Klausur: Stichpunkte 1. Auswertung System.out.println("abc" instanceof String); Ergebnis von instanceof ist ein boolean, der von println() problemlos ausgegeben werden kann. Object.equals ist per == definiert. 2. Observer-Pattern: Sinn verstehen. 3. OCL: Klasseninvarianten verstehen, Kontext wurde oft vergessen. 4. UML: Aggregation (stark versus schwach). Beobachtung: Noch mehr selbst machen. Seitdem die Übungsblätter nicht mehr Pflicht sind, hat die Qualität der Klausurabgaben stark abgenommen. 1

Schritte zum Erstellen eines Swing-GUIs (GUI = Graphical User Interface) Elemente (Buttons, Bäume, Textfelder etc.) schachteln. Elemente präzise anordnen. Auf Ereignisse (Events) reagieren: Mausklicks, Tastendrücke etc. 2

AWT versus Swing AWT: Abstract Window Toolkit Verwendet die nativen GUI-Elemente des unterliegen Betriebssystems. Swing Setzt auf AWT auf, zeichnet aber alle Elemente selbst. Die Klassennamen beginnen mit einem J (JComponent, JButton, JFrame etc.). 3

Components: Geschachtelte GUI-Elemente JFrame("YesNo") JPanel() [Inhalt des JFrames] JButton("Yes") JButton("No") 4

Components: Geschachtelte GUI-Elemente GUI-Elemente heissen in Swing Components (auch: Widgets). GUI-Elemente sind geschachtelt Es ergibt sich eine Containment Hierarchy (Baum, Relation contains). Welches Entwurfsmuster? Composite-Pattern! 5

Components: Klassenhierarchie (gekürzt) Component Container + add(comp : Component) : Component Composite- Pattern JComponent JFrame JButton JPanel 6

Components: Beispiel (1/2) public class YesNo { public static JComponent createcontent() {... } public static void main(string[] args) { JFrame frame = new JFrame(); frame.add(createcontent()); frame.setsize(300, 300); frame.setvisible(true); } } 7

Components: Beispiel (2/2) public static JComponent createcontent() { JPanel contentpanel = new JPanel(); contentpanel.add(new JButton("Yes")); contentpanel.add(new JButton("No")); return contentpanel; } 8

Component-Beispiel: So sieht es aus 9

Layout: Components anordnen Wie macht man das plattform- und auflösungsunabhängig? Lösungs-Idee: Komponenten haben eine minimale Größe. Man gibt, als Gitter, an, wie und ob Komponenten vergrößert werden sollen, wenn zusätzlicher Platz ist. 10

horizontal: max vertikal: max horizontal: max vertikal: min 11

Komponenten werden in minimaler Größe hintereinander aufgereiht. 12

Gitter mit vorgegebener Anzahl von Zeilen und Spalten. 13

Layout: Beispiel public static JComponent createcontent() { JPanel contentpanel = new JPanel(); contentpanel.setlayout(new GridLayout(1, 2)); // rows, cols contentpanel.add(new JButton("Yes")); contentpanel.add(new JButton("No")); return contentpanel; } 14

Layout-Beispiel: So sieht es aus 15

Events Idee: Beobachte und reagiere auf Veränderungen in dem GUI: Maus-Klicks, Tastendrücke. Welches Entwurfsmuster? Observer-Pattern Andere Namensgebung: Listener: Observer addlistener(): attach() removelistener(): detach() fireevent(): notify() Zusätzlich zum Observer-Pattern: Event-Objekte mit Informationen über das Ereignis. 16

Listeners: Vereinfachtes Observer-Pattern JButton + addactionlistener(l : ActionListener) + removeactionlistener(l : ActionListener) «interface» ActionListener + actionperformed(e : ActionEvent) ReactToButtonClick + actionperformed(e : ActionEvent) 17

Events: Beispiel public static JComponent createcontent() { final JPanel contentpanel = new JPanel(); contentpanel.setlayout(new GridLayout(1, 2)); // rows, cols JButton yesbutton = new JButton("Yes"); yesbutton.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { JOptionPane.showMessageDialog(contentPanel, "Thanks!"); } }); contentpanel.add(yesbutton); contentpanel.add(new JButton("No")); return contentpanel; } 18

Event-Beispiel: So sieht es aus 19

TemperatureConverter: So sieht es aus 20

TemperatureConverter-Highlight: BorderLayout public Component createcontent() { JPanel contentpanel = new JPanel(); contentpanel.setlayout(new BorderLayout()); contentpanel.add(createoutputpane(), BorderLayout.CENTER); contentpanel.add(createinputfield(), BorderLayout.PAGE_START); } return contentpanel; 21

TemperatureConverter-Highlight: HTML anzeigen private Component createoutputpane() { this.outputpane = new JTextPane(); this.outputpane.setcontenttype("text/html"); this.outputpane.seteditable(false); return this.outputpane; } private void setoutput(int inputint) { StringBuilder sb = new StringBuilder(); sb.append("<h1>konvertierung</h1>"); sb.append("<ul>\n"); sb.append("<li> "+inputint+"c = "+celsiustofahrenheit(inputint)+"f\n") sb.append("<li> "+inputint+"f = "+fahrenheittocelsius(inputint)+"c\n") sb.append("</ul>\n"); this.outputpane.settext(sb.tostring()); } 22

Zum Weiterbilden Java Tutorial, Swing Trail: http://java.sun.com/docs/books/tutorial/ uiswing/ Das Java-Tutorial von Sun ist generell gut gemacht und ziemlich umfangreich. Matisse-GUI-Builder: http://form.netbeans.org/ Standardmäßig bei NetBeans mit dabei. 23

Für Fortgeschrittene Databinding: http://www.clientjava.com/blog/2005/12/26/113563169085 html Vereinfacht die Verbindung zwischen Modellschicht und Präsentationsschicht. JGoodies Forms Layout Manager: http://www.jgoodies.com/freeware/ forms/ Durchdachter LayoutManager, der viel Nerv aus dem Layouting nimmt. Eclipse Standard Widget Toolkit (SWT): http://www.eclipse.org/swt/ (Nur) für Leute, die mit Swing nicht zufrieden sind: SWT hat native Widgets. 24