Praktikum Systementwicklung

Slides:



Advertisements
Ähnliche Präsentationen
programmiert April-Juni 2003 von Knut Riechmann
Advertisements

Ein Beispiel in Java.
Java – Swing Vortrag von Raphaela Wrede und Anja Jentzsch
Ausnahmen HS Merseburg (FH) WS 06/07.
Java: Programmierung grafischer Oberflächen
Java: Objektorientierte Programmierung
Java: Programmierung grafischer Oberflächen
Java: Dynamische Datentypen
Einfache Komponenten in SWING
Java: Grundlagen der Objektorientierung
MVC.
AUFGABE 1: Ein Wagen (dargestellt durch ein Rechteck) soll sich von links nach rechts bewegen. Tipp: Timer benutzen AUFGABE 2: Zusätzlich zu Aufgabe.
Grafische Benutzeroberfläche
Wie überwacht man Objekte im "Alltag" ?. Indem man "Wanzen" an diese anbringt.
Ein Beispiel in Java.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 6 Model-View-Controler als Grundlage für Nutzerschnittstellen Sommersemester 2003 Lars Bernard.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 7 User Interfaces in Java Sommersemester 2003 Lars Bernard.
AWT – Detailbetrachtung Java 3D – Seminar im Wintersemester 2002/2003 Christian Schneider.
Java Layout Manager (JLM) Marc Dziadek
Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit.
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
1DVG3 - Eventbehandlung Eventbehandlung. DVG3 - Eventbehandlung 2 Events Events sind externe Ereignisse, die parallel zum normalen Programmablauf auftreten.
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
SWING DVG Swing.
DVG Klassen und Objekte
SWING DVG Swing.
03 - Paint Das Zeichenprogramm EMMA Paint2 Aufgabenstellung Entwicklung eines ausschließlich in JAVA programmierten Graphikprogrammes. Vergleichsprodukte:
04 - Actions Actions Actions 2 Motivation In verschiedenen Swing-Komponenten werden ausgelöste Aktionen durch ActionListener behandelt. Häufig werden.
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Step by step zum JFrame 1 Zum JFrame Step by step by step by step by step by step by step by step by.
© 2005 Pohlig GK Informatik K Zum JFrame Step by step by step by step by step by step by step by step by.
© 2006 MPohlig Grundkurs Informatik mit Java 1 JFrame-Vorlage Step by step by step by step by step by step by step by step by.
© 2004 Pohlig - Taulien Swing Ereignissteuerung. © 2004 Pohlig - Taulien GK Informatik mit Java 2 Auf Button-Klick reagieren.
© 2005 Pohlig – Taulien: Eine GUI für die Klasse Mathematik Kurs: Come Together 1 April 2005 Eine GUI für die Klasse Mathematik.
© 2005 Pohlig – Taulien: Die Matheamatik-GUI als Applet Come Together 1 April 2005 Was ist ein Applet Ein Applet ist ein Javaprogramm, das die VM benutzt,
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 6 Sitzung 6: Model-View-Controller als Grundlage.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 7 Sitzung 7: User Interfaces in Java.
Objektorientierte Modellierung
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Universität zu Lübeck Institut für Informationssysteme Die Präsentationsschicht - mit Swing.
Erste Schritte mit Eclipse Neues Projekt erstellen (1)
AWT und JFC Abstract Windowing Toolkit
Telecooperation/RBG Technische Universität Darmstadt Copyrighted material; for TUD student use only Grundlagen der Informatik 1 Thema 21: GUI und verschachtelte.
Applets Java für’s Web.
Programmiermethodik Übung 6
Java: Programmierung grafischer Oberflächen
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
Informatik – Programmierpraktikum Alexander Volodarski Gruppe 14
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Programmierpraktikum Java SS 2005
Java-AG Benutzeroberflächen Juni 2001 Michael Haas.
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Programmierpraktikum Java SS 2005
© 2005 Pohlig Informatik Jg. 11 mfH Michael Pohlig 1 Zum JFrame Step by step by step by step by step by step by step by step by.
Java-Kurs Übung Benutzeroberflächen und Graphik Frames (Fenster)
Institut für Kartographie und Geoinformation Prof. Dr. L. Plümer, Dipl.-Ing. D. Dörschlag, Dr. G. Gröger Einführung in die Programmierung mit Java 13.
Einführung in die OOP in Java
GUI Programmierung in Java Branimir Djordjevic. GUI - Wichtige Begriffe -  Die Swing-Bibliothek in Java stellt zum Beispiel die folgenden Windows zur.
, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 Event Handling in der Programmiersprache Java.
Grafische Benutzeroberflächen mit Swing (2) Christoph Broschinski, Alexander Sczyrba Jan Krüger
Verwendung von Graphical-User-Interfaces der Bibliothek: javax.swing.*
Abstract Windowing Toolkit
Abstract Windowing Toolkit
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
Implementieren von Klassen
Informatik Softwareentwicklung – 4.3 Entwurfsmuster
 Präsentation transkript:

Praktikum Systementwicklung Java Swing CNAM Praktikum Systementwicklung Prof. Dr. Bernhard Humm Hochschule Darmstadt – University of Applied Sciences Wintersemester 2006/2007

Agenda Agenda GUIs Hochschule Darmstadt – University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. WS 06/07. 13.12.2006

Grafische Benutzeroberflächen (GUIs) Beispiel aus dem Fachkonzept GB-HÄKO inhaltlich wir HÄKO im Vortrag dynamische Dialogspezifikation erläutert im Fachkonzept: Layout der Formular Dialog stammt aus ARRIBA 8.0 der RIB Software AG (www.rib.de) Hochschule Darmstadt – University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. WS 06/07., 13.12.2006,

Bausteine für das Dialoglayout (Bibliothek) GUIs Bausteine für das Dialoglayout (Bibliothek) Kopfzeile Spalte U 051111 000 051112 A 051115 001 V 051117 Datei Bearbeiten Ansicht Hilfe Teildialog Reiter Wert Feld Button Hochschule Darmstadt – University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. WS 06/07., 13.12.2006,

Agenda Java Swing Agenda Hochschule Darmstadt – University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. WS 06/07. 13.12.2006

Java Swing Java Swing Java Swing: Bibliothek von Bausteinen zur Erstellung von GUIs in Java Teil der JFC (Java Foundation Classes Basierend auf AWT (Abstract Windowing Toolkit, dem ersten, einfachen GUI-Framework in Java Portable, das heißt betriebssystemunabhängige GUIs Unser Beispiel: Calculator Hochschule Darmstadt – University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. WS 06/07., 13.12.2006,

Agenda GUI-Statik Agenda Hochschule Darmstadt – University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. WS 06/07. 13.12.2006

JFrame: Ein leeres Fenster anlegen GUI-Statik JFrame: Ein leeres Fenster anlegen javax.swing.*: Java Extensions mit allen Swing-Klassen JFrame: Fenster mit Rahmen und Inhaltsbereich (anfangs leer) JFrame wird initialisiert (damit erst einmal noch nicht sichtbar) Mit frame.setTitle(“Calculator“) kann der Fenstertitel gesetzt werden (alternativ mit Konstruktor) Anzeigen: frame.setVisible(true); package gui; import javax.swing.JFrame; public class CalculatorFrame extends JFrame { public static void main(String[] args) { CalculatorFrame calculatorFrame = null; calculatorFrame = new CalculatorFrame (); calculatorFrame.setVisible(true); } public CalculatorFrame() { super("Calculator"); Hochschule Darmstadt – University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. WS 06/07., 13.12.2006,

Das Fenster füllen: statisches GUI-Layout GUI-Statik Das Fenster füllen: statisches GUI-Layout Hochschule Darmstadt – University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. WS 06/07., 13.12.2006,

GUI-Statik Component Hierarchie Component: Objekt mit graphischer Repräsentation (AWT und Swing); kann Events verschicken und empfangen, Container: Behälter für andere Components (Composite Pattern); kann LayoutManager benutzen JComponent: Basisklasse für alle Swing-Komponenten; kann Look and Feel setzen JFrame, JDialog, JApplet: top-level Swing-Container JPanel: eingebetteter Swing-Container JLabel, JTextField, JButton, …: Swing-Komponenten Hochschule Darmstadt – University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. WS 06/07., 13.12.2006,

GUI-Statik LayoutManager Der LayoutManager ist für die Anordnung der Dialogelemente im Fenster verantwortlich Jeder LayoutManager verfolgt dabei eine eigene Strategie, Elemente zu platzieren und in der Größe so anzupassen, dass sie aus seiner Sicht optimal präsentiert werden Standard-LayoutManager: FlowLayout GridLayout BorderLayout CardLayout GridBagLayout Null-Layout: Handarbeit Hochschule Darmstadt – University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. WS 06/07., 13.12.2006,

GUI-Statik FlowLayout Das FlowLayout ordnet Dialogelemente nebeneinander in einer Zeile an Wenn keine weiteren Elemente in die Zeile passen, wird mit der nächsten Zeile fortgefahren. Hochschule Darmstadt – University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. WS 06/07., 13.12.2006,

GUI-Statik GridLayout Das GridLayout ordnet die Dialogelemente in einem rechteckigen Gitter an, dessen Zeilen- und Spaltenzahl beim Erstellen des Layoutmanagers angegeben wird (Das GridBagLayout ist ein komplexer Layoutmanager, der die Fähigkeiten von GridLayout erweitert und es ermöglicht, mit Hilfe von Bedingungsobjekten sehr komplexe Layouts zu erzeugen) Hochschule Darmstadt – University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. WS 06/07., 13.12.2006,

calculatorPanel: CENTER GUI-Statik BorderLayout Das BorderLayout verteilt die Dialogelemente nach Vorgabe des Programms auf die vier Randbereiche und den Mittelbereich des Fensters: NORTH SOUTH WEST EAST CENTER calculatorPanel: CENTER commandPanel: SOUTH Hochschule Darmstadt – University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. WS 06/07., 13.12.2006,

Das statische GUI-Layout programmieren GUI-Statik Das statische GUI-Layout programmieren private void layoutFrame() { Container contentPane; aLabel = new JLabel("a:"); aTextField = new JTextField(); calculatorPanel = new JPanel(new GridLayout(4, 2)); calculatorPanel.add(aLabel); calculatorPanel.add(aTextField); … computeButton = new JButton("Compute"); commandPanel = new JPanel(new FlowLayout()); commandPanel.add(computeButton); contentPane = this.getContentPane(); contentPane.setLayout(new BorderLayout()); contentPane.add(calculatorPanel, BorderLayout.CENTER); contentPane.add(commandPanel, BorderLayout.SOUTH); this.pack(); } Swing-Komponenten erzeugen durch Instanziierung, zum Beispiel new JLabel JPanels erzeugen durch Instanziierung Komponenten zu Containern hinzufügen durch add Beispiele für 3 LayoutManager frame.pack() (aus java.awt.Window): führt das Layout durch und passt die Fenstergröße an Hochschule Darmstadt – University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. WS 06/07., 13.12.2006,

Agenda GUI-Dynamik Agenda Hochschule Darmstadt – University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. WS 06/07. 13.12.2006

Das Model View Controller (MVC) Muster GUI-Dynamik Das Model View Controller (MVC) Muster Muster zur Gestaltung grafischer Benutzeroberflächen (aus Smalltalk 80) View: grafische Repräsentation, kennt Controller und Model Controller: Ablaufsteuerung, kennt View und Model Model: Anwendungsdaten und –funktionen; kennt im Idealfall weder Controller noch View; meldet nur Änderungen (Observer Pattern) JFrame implementiert View View: grafische Repräsen-tation Controller: Ablauf-steuerung Model: Anwendungs-daten und funktionen Hochschule Darmstadt – University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. WS 06/07., 13.12.2006,

Delegation-based Event Handling GUI-Dynamik Delegation-based Event Handling Kommunikation zwischen Betriebssystem und Anwendungsprogramm erfolgt durch das Versenden von Nachrichten Ereignisquellen (Event Sources) sind die Auslöser der Nachrichten Ereignisempfängern (EventListeners) sind Objekte, die das zum Ereignis passende Empfänger-Interface implementieren Damit ein Ereignisempfänger die Nachrichten einer bestimmten Ereignisquelle erhält, muss er sich bei dieser registrieren Delegation Based Event Handling: Mechanismus in Swing (mächtiger, aber auch komplexer als entsprechender Mechanismus in AWT) Hochschule Darmstadt – University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. WS 06/07., 13.12.2006,

GUI-Dynamik Events (Ereignisse) Klassenhierarchie für alle Ereignistypen; Wurzel: java.util.EventObject, Events für GUI-Programmierung in java.awt.AWTEvent Low-Level-Ereignisse ComponentEvent: für den Transfer von elementaren Nachrichten zuständig, die von Fenstern oder Dialogelementen stammen Semantische Ereignisse ActionEvent, AdjustmentEvent, ItemEvent und TextEvent: nicht an ein bestimmtes GUI-Element gebunden, sondern übermitteln höherwertige Ereignisse wie das Ausführen eines Kommandos oder die Änderung eines Zustands Hochschule Darmstadt – University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. WS 06/07., 13.12.2006,

Listener (Ereignisempfänger) GUI-Dynamik Listener (Ereignisempfänger) Damit ein Objekt Nachrichten empfangen kann, muss es eine Reihe von Methoden implementieren, die von der Nachrichtenquelle, bei der es sich registriert hat, aufgerufen werden können  Interfaces implementieren, die aus java.util.EventListener abgeleitet sind Je Ereignisklasse gibt es ein EventListener-Interface Hochschule Darmstadt – University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. WS 06/07., 13.12.2006,

Listener registrieren GUI-Dynamik Listener registrieren Listener muss ein EventListener Interface implementieren Im Beispiel: Controller-Klasse CalculatorController – ActionListener Variante anonyme innere Klassen auch gebräuchlich Ereignis-Auslöser: hier JButton (ActionEvent) Registrierung von calculatorController bei computeButton durch addActionListener import java.awt.event.*; public class CalculatorController implements ActionListener { CalculatorFrame calculatorFrame; … } private void layoutFrame() { ... computeButton = new JButton("Compute"); computeButton.addActionListener( getCalculatorController()); } Hochschule Darmstadt – University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. WS 06/07., 13.12.2006,

GUI-Dynamik Auf Events reagieren ActionListener muss die Methode actionPerformed(ActionEvent e) implementieren Aufruf des Models, hier: Calculator Klasse mit Klassenmethode compute(a, operator, b) Parameter auslesen aus View, hier: calculatorFrame. getATextField().getText(); Ergebnis rückschreiben in View, hier: calculatorFrame. getResultTextField(). setText(result); import java.awt.event.*; public class CalculatorController implements ActionListener { CalculatorFrame calculatorFrame; public void actionPerformed(ActionEvent e) { if(e.getActionCommand().equals("Compute")){ String a, operator, b, result; a = calculatorFrame.getATextField().getText(); operator = calculatorFrame.getOperatorTextField(). getText(); b = calculatorFrame.getBTextField().getText(); result = Calculator.compute(a, operator, b); calculatorFrame.getResultTextField().setText(result); } … } Hochschule Darmstadt – University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. WS 06/07., 13.12.2006,

GUI-Dynamik Fenster schließen frame.setVisible(false): schließt die Anzeige eines Fensters; das Fenster kann durch setVisible(true) jederzeit wieder geöffnet werden frame.dispose(): schließt die Anzeige des Fensters und räumt alle Ressoucen auf. Das Fenster kann nicht mehr geöffnet werden System.exit(0): beendet das Programm import java.awt.event.*; public class CalculatorController implements ActionListener { CalculatorFrame calculatorFrame; public void actionPerformed(ActionEvent e) { … if (e.getActionCommand().equals("Quit")){ calculatorFrame.setVisible(false); calculatorFrame.dispose(); System.exit(0); } … } Hochschule Darmstadt – University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. WS 06/07., 13.12.2006,

Agenda Referenzen Agenda Hochschule Darmstadt – University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. WS 06/07. 13.12.2006

Referenzen Zum Weiterlesen Guido Krüger, Handbuch der Java-Programmierung, Kapitel 23 - 40 Hochschule Darmstadt – University of Applied Sciences. Fachbereich Informatik. Prof. Dr. Bernhard Humm. WS 06/07., 13.12.2006,