Techniken der Projektentwicklung

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

Programmiertechnik GUI Programmierung mit Java Swing

Java I Vorlesung 11 Graphische Oberflächen mit Swing

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI)

Einstieg in die Informatik mit Java

GUI Programmierung mit JAVA Swing

Grafische Benutzeroberflächen mit Swing

Swing Lernen am Code Teil 1

Objektorientierte Software-Entwicklung

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

Einführung in Swing. Graphical User Interface

Objektorientierte Programmierung

Kap. 35 Swing: Grundlagen Kap Swing: Hauptfenster

Benutzeroberflächen. Java Teil 4

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

Funktionale und Objekt-Orientierte Programmierkonzepte

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

GUIs in Java und ihre Programmierung

Java Lab 2006/12/13 Client

Objektorientierte Softwareentwicklung

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

GUI Programmierung in Java

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

Graphische Benutzungsoberflächen

NTB Druckdatum:

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

2A Basistechniken: Weitere Aufgaben

Swing :Komponenten I (Teil 2)

Grundlagen der Programmierung APPLETS

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

Swing Grundlagen. Andre Eichmann

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

Testen von graphischen Benutzeroberflächen. 26. Juni 2013

Sommersemester Implementierung III: GUI und Verhalten (Teil 2)

Prinzipien Objektorientierter Programmierung

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

Mensch-Maschine-Interaktion

GRAFISCHE BENUTZERSCHNITTSTELLEN

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

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

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

GUI. Programmiermethodik. Eva Zangerle Universität Innsbruck

...erinnern Sie sich? oopjs4b / kwhbkd4r

Java Projekt: Tic Tac Toe + GUI

Schieberegler und analoge Anzeigen

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

7.1 Übersicht Geschichte von swing

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

Vorlesung 13. Sitzung Grundlegende Programmiertechniken

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

11. GUI-Programmierung mit SWING Überblick

Handbuch für die DailyDeal Entwertungs-App

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

Testen von graphischen Benutzeroberflächen. 24. Juni 2015

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

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

Dokumentation Typo3. tt - news - Nachrichtenmodul

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

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

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Vorkurs C++ Programmierung

Delegatesund Ereignisse

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

Java: Vererbung. Teil 3: super()

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

/** Main-Methode erzeugt einen neuen Editor zum Testen */ public static void main(string[] args) { new Editor();

WebService in Java SE und EE

Kennen, können, beherrschen lernen was gebraucht wird

Kap. 36. SWING: Menüs. und weitere SWING-Container. Seán Dempsey

Graphical User Interfaces

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

Institut für Informatik

Dokumentation PuSCH App. windows-phone

WinWerk. Prozess 4 Akonto. KMU Ratgeber AG. Inhaltsverzeichnis. Im Ifang Effretikon

Einführung in die GUI Programmierung mit Java

Innere Klassen in Java

Administratorinnenrechte/Administratorenrechte entziehen

Dokumentation des Projektes Tic Tac Toe

Die aktuelle Entwicklung des GeoService-Portals. Analyse- und Auswertefunktionen

Freischaltung des ChipTAN-Verfahrens in SFirm32, Version 2.3

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

Transkript:

Einleitung Architektur Swing Beispiele Aufgabe Techniken der Projektentwicklung Swing Concepts Ingo Lütkebohle Termin 11 Ingo Lütkebohle Techniken der Projektentwicklung 1

Einleitung Architektur Swing Beispiele Aufgabe Einordnung Was bisher war Allgemeine Entwurfstechniken Serielle Programmabläufe (AuD) Thema heute Architektur grafischer Benutzeroberflächen (GUIs) GUIs in Java mit Swing Ingo Lütkebohle Techniken der Projektentwicklung 2

Einleitung Architektur Swing Beispiele Aufgabe Seriell Ereignisorientiert Benachrichtigung Serielle Programmarchitektur Data Programm kontrolliert Ablauf Eingabe-Verarbeitung-Ausgabe System invoke Main Steuerung: Start, festgelegte Punkte Typisch für Übungsaufgaben, kleine Skripte, etc. read modify Ingo Lütkebohle Techniken der Projektentwicklung 3

Einleitung Architektur Swing Beispiele Aufgabe Seriell Ereignisorientiert Benachrichtigung Architektur grafischer Programme Data Main System invoke System (Benutzer) kontrolliert Ablauf Swing show Ablauf variabel Steuerung ereignisorientiert, frei operate observe notify modify Inversion of Control dispose dispose Ingo Lütkebohle Techniken der Projektentwicklung 4

Einleitung Architektur Swing Beispiele Aufgabe Seriell Ereignisorientiert Benachrichtigung Beispielhafte Ereignisse Neuzeichnen bei... Aufdecken des Fensters Selektion eines Elements Eingabe annehmen... Drücken eines Buttons Texteingabe Ingo Lütkebohle Techniken der Projektentwicklung 5

Einleitung Architektur Swing Beispiele Aufgabe Seriell Ereignisorientiert Benachrichtigung Benachrichtigungsmechanismen Direkte Methodenaufrufe z.b. paintcomponent nur für sichtbare Komponenten geschieht automatisch Ereignisbenachrichtigung 1 Entwickler implementiert EventListener 2 Listener-Instanz an GUI-Komponente anmelden 3 Komponente ändert Zustand 4 Listener-Methode empfängt Event Ingo Lütkebohle Techniken der Projektentwicklung 6

Einleitung Architektur Swing Beispiele Aufgabe Seriell Ereignisorientiert Benachrichtigung Vorteile von Event-Listenern Gruppierung Menu Lists Table Komponente selbst immer gleich Gruppierung logisch zusammenhängender Ereignisse mehrerer Komponenten Aufteilung unzusammenhängender Bearbeitung von Ereignissen einer Komponente Listener Aufteilung Lists EL 1 EL2 Ingo Lütkebohle Techniken der Projektentwicklung 7

Einleitung Architektur Swing Beispiele Aufgabe Seriell Ereignisorientiert Benachrichtigung Hinweise zur Implementierung von EventListenern Initial: Ein EventListener pro Use Case Reiner Vermittler zwischen GUI und Rest Für Swing zeitkritisch (da im Swing-Thread aufgerufen) Falls Neuzeichnen der GUI notwendig, repaint aufrufen. Ingo Lütkebohle Techniken der Projektentwicklung 8

Einleitung Architektur Swing Beispiele Aufgabe Komponenten Layout Neue Komponenten Swing Baukasten Komponenten für Benutzerinteraktion Direkt verwendbar Container zur Organisation Layout-Manager zur Anordnung (hier: vertical/horizontal Box) Ingo Lütkebohle Techniken der Projektentwicklung 9

Einleitung Architektur Swing Beispiele Aufgabe Komponenten Layout Neue Komponenten Swing Baukasten Komponenten für Benutzerinteraktion Direkt verwendbar Container zur Organisation Layout-Manager zur Anordnung (hier: vertical/horizontal Box) Ingo Lütkebohle Techniken der Projektentwicklung 9

Einleitung Architektur Swing Beispiele Aufgabe Komponenten Layout Neue Komponenten Wichtige Komponenten: Schnittstellenelemente JTextfield JMenu & -Item JButton JLabel JComboBox JSlider Bilder aus http://java.sun.com/docs/books/tutorial/uiswing/components/components.html Ingo Lütkebohle Techniken der Projektentwicklung 10

Einleitung Architektur Swing Beispiele Aufgabe Komponenten Layout Neue Komponenten Wichtige Komponenten: Container JFrame JPanel JScrollPane JTabbedPane JSplitPane Bilder aus http://java.sun.com/docs/books/tutorial/uiswing/components/components.html Ingo Lütkebohle Techniken der Projektentwicklung 11

Einleitung Architektur Swing Beispiele Aufgabe Komponenten Layout Neue Komponenten Warum Layout-Manager? Früher: Manuelle, pixelgenaue Anordnung Probleme: Textabmessungen variieren (Font, Sprache) Dynamische Erzeugung von GUIs Hoher Änderungsaufwand In Swing: Relatives Layout 1 Relative grobe Positionsangaben ( zuoberst, rechts von ) 2 Komponenten kennen ihre Größe 3 Layout-Manager berechnet den Rest Ingo Lütkebohle Techniken der Projektentwicklung 12

Einleitung Architektur Swing Beispiele Aufgabe Komponenten Layout Neue Komponenten BorderLayout Default für JFrame ContentPane Feste Positionen für jeweils genau eine Komponente Gibt CENTER allen Platz der nicht sonst benötigt wird Nicht alle Positionen müssen besetzt werden http://java.sun.com/docs/books/tutorial/uiswing/layout/border.html Ingo Lütkebohle Techniken der Projektentwicklung 13

Einleitung Architektur Swing Beispiele Aufgabe Komponenten Layout Neue Komponenten BoxLayout und Box Vertikal Anordnungen: Vertikal: links rechts Horizontal: oben unten Beachtet Komponentengrößen Sehr weit anpassbar Box-Klasse mit praktischen Hilfsfunktionen 1 2 3 Horizontal 1 2 3 http://java.sun.com/docs/books/tutorial/uiswing/layout/box.html Ingo Lütkebohle Techniken der Projektentwicklung 14

Einleitung Architektur Swing Beispiele Aufgabe Komponenten Layout Neue Komponenten Eigene Komponenten Ableiten von JComponent oder Unterklasse JPanel ist ganz praktisch Muss Zeichenfläche selbst verwalten Kommunikation mit externen Komponenten sollte Listener-Konzept folgen Kann eigene Events/Listener definieren Ingo Lütkebohle Techniken der Projektentwicklung 15

Einleitung Architektur Swing Beispiele Aufgabe Komponenten Layout Neue Komponenten Zeichnen auf Anforderung paintcomponent überladen Muss jederzeit alles zeichnen können Kann ggfls. kleinere Bereiche zeichnen ( clipping rectangle ) Zeitkritisch (da im UI-Thread) keine großen Berechnungen! Standardmäßig gepufferte Anzeige (kein flicker ) http://java.sun.com/docs/books/tutorial/uiswing/14painting/concepts.html Ingo Lütkebohle Techniken der Projektentwicklung 16

Einleitung Architektur Swing Beispiele Aufgabe Komponenten Layout Neue Komponenten Interaktion mit dem Layout-Manager Größe über setpreferredsize vorgeben In paintcomponent tatsächliche Größe abfragen Dokumentation des Layout-Managers für Spezifika beachten Beispielgrößen minimum ipsum preferred Ingo Lütkebohle Techniken der Projektentwicklung 17

Einleitung Architektur Swing Beispiele Aufgabe Hello World Clickcounter Hello World Erzeugen eines Fensters (JFrame) JLabel zum Anzeigen von Hello World Anzeigen des Fensters /vol/tdpe/share/material /session11/helloworldswing.java Ingo Lütkebohle Techniken der Projektentwicklung 18

Einleitung Architektur Swing Beispiele Aufgabe Hello World Clickcounter Das Grundgerüst public class HelloWorldSwing { private static void createandshowgui() {... } } public static void main(string[] args) { //Schedule a job for the event-dispatching thread: //creating and showing this application's GUI. javax.swing.swingutilities.invokelater(new Runnable() { public void run() { createandshowgui(); } }); } Ingo Lütkebohle Techniken der Projektentwicklung 19

Einleitung Architektur Swing Beispiele Aufgabe Hello World Clickcounter Fenster erzeugen und anzeigen public class HelloWorldSwing { /** * Create the GUI and show it. For thread safety, * this method should be invoked from the * event-dispatching thread. */ private static void createandshowgui() { //Make sure we have nice window decorations. JFrame.setDefaultLookAndFeelDecorated(true);... //Create and set up the window. JFrame frame = new JFrame("HelloWorldSwing"); frame.setdefaultcloseoperation(jframe.exit_on_close); } } //Display the window. frame.pack(); frame.setvisible(true); Ingo Lütkebohle Techniken der Projektentwicklung 20

Einleitung Architektur Swing Beispiele Aufgabe Hello World Clickcounter Label erzeugen und einbinden public class HelloWorldSwing { /** * Create the GUI and show it. For thread safety, * this method should be invoked from the * event-dispatching thread. */ private static void createandshowgui() {... //Add the ubiquitous "Hello World" label. JLabel label = new JLabel("Hello World"); frame.getcontentpane().add(label); } } //Display the window. frame.pack(); frame.setvisible(true); Ingo Lütkebohle Techniken der Projektentwicklung 21

Einleitung Architektur Swing Beispiele Aufgabe Hello World Clickcounter Ein Clickcounter Ein Fenster mit einem Button Die Clicks auf den Button werden mitgezählt und angezeigt /vol/tdpe/share/material /session11/swingapplication.java Ingo Lütkebohle Techniken der Projektentwicklung 22

Einleitung Architektur Swing Beispiele Aufgabe Hello World Clickcounter Das Grundgerüst public class SwingApplication { } public static void main(string[] args) { //Schedule a job for the event-dispatching thread: //creating and showing this application's GUI. javax.swing.swingutilities.invokelater(new Runnable() { public void run() { createandshowgui(); } }); } Ingo Lütkebohle Techniken der Projektentwicklung 23

Einleitung Architektur Swing Beispiele Aufgabe Hello World Clickcounter Fenster und Inhalte erzeugen private static void createandshowgui() {... //Create and set up the window. JFrame frame = new JFrame("SwingApplication"); frame.setdefaultcloseoperation(jframe.exit_on_close); SwingApplication app = new SwingApplication(); Component contents = app.createcomponents(); frame.getcontentpane().add(contents, BorderLayout.CENTER) } //Display the window. frame.pack(); frame.setvisible(true); Ingo Lütkebohle Techniken der Projektentwicklung 24

Einleitung Architektur Swing Beispiele Aufgabe Hello World Clickcounter Ein einfaches GridLayout private static String labelprefix="number of button clicks: "; final JLabel label = new JLabel(labelPrefix + "0 "); public Component createcomponents() { JButton button = new JButton("I'm a Swing button!"); button.setmnemonic(keyevent.vk_i); button.addactionlistener(this); label.setlabelfor(button); } JPanel pane = new JPanel(new GridLayout(0, 1)); pane.add(button); pane.add(label); pane.setborder( BorderFactory.createEmptyBorder(30, 30, 10, 30)); return pane; Ingo Lütkebohle Techniken der Projektentwicklung 25

Einleitung Architektur Swing Beispiele Aufgabe Hello World Clickcounter EventListener public class SwingApplication implements ActionListener { } public void actionperformed(actionevent e) { numclicks++; label.settext(labelprefix + numclicks); } Ingo Lütkebohle Techniken der Projektentwicklung 26

Einleitung Architektur Swing Beispiele Aufgabe Aufgabe für zwei Wochen Ingo Lütkebohle Techniken der Projektentwicklung 27

Einleitung Architektur Swing Beispiele Aufgabe Aufgabe für zwei Wochen Ein Zeichenprogramm Funktionen: Zeichnen vor Linien, Rechtecken, Ellipsen mit der Maus Je in mindest drei verschiedenen Farben Der Benutzer kann Schritte rückgängig machen (UnDo) Der Benutzer kann gelöschte Formen wieder einblenden (ReDo) Ingo Lütkebohle Techniken der Projektentwicklung 28

Einleitung Architektur Swing Beispiele Aufgabe Aufgabe für zwei Wochen Abgabe: Quellcode und ausführbares Programm Unter: /vol/tdpe/groupx/session11/teamy/ Bearbeitung zu zweit Zeit: zwei Wochen Ingo Lütkebohle Techniken der Projektentwicklung 29