Medientechnik Sommersemester 2016

Ähnliche Dokumente
Medientechnik Sommersemester 2016

... Created by Michael Kirsch & Beat Rossmy

Einführung in JavaFX

Entwicklung mit JavaFX

Javakurs für Fortgeschrittene

The Free Lunch Is Over

Medientechnik Sommersemester 2016

JavaFX. Prof. Arnold Beck Einführung Java FX 1

Javakurs für Fortgeschrittene

Algorithmen und Datenstrukturen CS1017

Medientechnik. Übung 2 Java Swing

Praktikum. SEP: Java-Programmierung WS 2018/19. Einführung JavaFX. Thomas Lemberger und Martin Spießl. (OpenJFX)

Sehenswert: Grafische Benutzeroberflächen mit JavaFX

Einführung in die Programmierung mit Java

Medientechnik. Übung 3 MVC & Observer

JavaFX8 - JumpStart - JUGCH. file:///d:/workspace/kurs-java8/doc/javafx-jumpstart.html#1 1/128

Nutzung von JavaFX. Wo? Wann? Wie?

Vorkurs Informatik WiSe 17/18

Javakurs für Fortgeschrittene

MVVM (Model View ViewModel) in JavaFX

Javakurs für Fortgeschrittene

Vorkurs Informatik WiSe 16/17

Institut für Programmierung und Reaktive Systeme. Java 1. Markus Reschke

Grafische Benutzeroberflächen mit JavaFX Einführung

JavaFX. Wolfgang Weigend. ORACLE Deutschland B.V. & Co. KG. Entwicklung mit JavaFX

JavaFX. Arthur Zaczek. Mar 2015

Praktikum 1: Einführung, BMI Rechner

Streichen Sie bitte eine der Aufgaben 3-5!

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Java: Kapitel 1. Überblick. Programmentwicklung WS 2008/2009. Holger Röder Holger Röder

Programmieren I. Dokumentation mit javadoc Heusch 10.4 Ratz Institut für Angewandte Informatik

Informatik II (D-ITET)

Datum, Uhrzeit: , Uhr Matrikelnummer:... Semester: INbac2 Prüfer: Prof. Meixner Note:...

JavaFX Wozu braucht man eine weitere UI Technologie?

Software-Engineering Grundlagen des Software-Engineering

Good bye Swing hello JavaFX

JavaFX Beispiel Lights Out (Teil 1: Ansicht)

Vorkurs Informatik WiSe 15/16

Javakurs für Fortgeschrittene

Webentwicklung mit Vaadin 7. Theoretische und praktische Einführung in Vaadin 7. Christian Dresen, Michael Gerdes, Sergej Schumilo

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

Einführung in die Programmierung Blockkurs Java

2. JavaFX. Komponentenbasierte Software- Entwicklung. Prof. Dr. Stephan Kleuker

Inhaltsverzeichnis 1 Einführung Die Software JGIS Grundlagen raumbezogener Daten

Aufgabenblatt 1: - Präsenzübung für die Übungen Do Mi Ausgabe Mi

Teil 3 - Java. Grundlagen Klassen, Attribute Methoden

Tutorium SS17 EINFÜHRUNG + BREAKOUT

Informatik II (D-ITET) Informatik II (D-ITET) Übungsstunde 1. Distributed Systems Group, ETH Zürich

Einführung in das Programmieren

Javakurs für Fortgeschrittene

Datum, Uhrzeit: , Uhr Matrikelnummer:... Semester: INbac2 Prüfer: Prof. Meixner Note:...

Informatik II (D-ITET) Übungsstunde 1,

Informatik II - Übung 01

Einführung in GUI-Programmierung. javax.swing

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

Grafische Benutzeroberflächen mit JavaFX Canvas, Transformationen, Scene Builder

Funktionale und Objekt-Orientierte Programmierkonzepte

Javakurs für Fortgeschrittene

Java-Einführungskurs Informatik II (D-ITET) Vincent Becker,

Installation von LeJOS für NXT und Einrichtung von Eclipse

Bachelorprüfung: Objektorientierte Softwareentwicklung

JavaFX Layout and Controls

Inhaltsverzeichnis VII

Grundlagen der Programmierung UE. Dr. Herbert Prähofer (Gruppe 1 2, & 3) DI Markus Weninger(Gruppe 4)

Java und Eclipse Installation, erstes Beispielprogramm

Objektorientierte Programmierung Studiengang Medieninformatik

JUnit 4 Tutorial. Wolfgang Stöttinger

Grundlagen der Informatik für Ingenieure I

Einführung zu den Übungen aus Softwareentwicklung 1

Java-Einführungskurs Informatik II (D-ITET) Vincent Becker,

Wiederholung JAVA. 1. (Vorbereitung)

Universität Karlsruhe (TH)

Vorlesung Informatik II

Handbuch für die Erweiterbarkeit

Einführung in die Programmierung I. 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Oliver Brinkmann Java Swing-Applikationen & JApplets (mit NetBeans)

Informatik II Übung 1

Übung Nr. 20 Freitag, 09:00-11:00 Uhr in E3.301

Multimedia im Netz Wintersemester 2012/13

Übung 1: Installation + Test von Eclipse. Übung 2: Hello World

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

Nebenläufige und verteilte Programme CS2301

Java Einführung Programmcode

Einführung in JavaFX

JUnit. Unit testing unter Java

Übung zur Vorlesung Strukturiertes Programmieren WS 2014/15. Übungsblatt 1: JAVA - Erste Schritte Abgabe: Besprechung:

Übungen zum Bioinformatik-Tutorium. Blatt 3

Informatik Hochschule Mainz Geoinformatik und Vermessung. Wiederholung. Frohes Fest und Guten Rutsch!

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

(1)Einführung in Eclipse

Softwaretechnik (Medieninformatik): GUIs mit Swing Überblick

Programmieren I. Dokumentation mit Javadoc Heusch 10.4 Ratz Institut für Angewandte Informatik

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

Transkript:

Medientechnik Sommersemester 2016 Übung 01 (Einführung in Java FX) Medientechnik SS 2016 - Übung 01-1

Terminübersicht Nr Zeitraum Thema 1 18.04. - 21.04. Organisatorisches, Bildbearbeitung 2 09.05. - 12.05. JavaFX Einführung (GUIs, Szenengraph) 3 17.05. - 19.05. Design Patterns: MVC, Observer 4 23.05. - 25.05. FXML, Bildfilter 5 30.05. - 02.06. Videobearbeitung 6 06.06. - 09.06. Video Streams mit JavaFX 7 20.06. - 23.06. Audiobearbeitung 8 27.06. - 30.06. Multimedia mit JavaFX Medientechnik SS 2016 - Übung 01-2

Agenda Einführung in JavaFX Application Klasse GUI Elemente Layouting Breakout Session Wrap-Up Quiz Vorbesprechung Übungsblatt 1 Medientechnik SS 2016 - Übung 01-3

Der Anfang von Java GUIs: AWT Medientechnik SS 2016 - Übung 01-4

Kurz darauf: Java Swing Medientechnik SS 2016 - Übung 01-5

Und jetzt: JavaFX! Medientechnik SS 2016 - Übung 01-6

JavaFX 8 - Features FXML Markup Sprache, die auf XML basiert Einfacheres Layouting von GUIs CSS für Styling ist sehr einfach Moderne Plattformen werden unterstützt, z.b. Multi-Touch 3D Viewer Mit dem Scene Builder kann man GUIs zusammenklicken Aktuelles Java wird unterstützt JavaScript Kompatibilität mit Nashorn Medientechnik SS 2016 - Übung 01-7

Anforderungen Java Development Kit 1.8 (JDK) enthält JavaFX http://www.oracle.com/technetwork/java/javase/downloads/ jdk8-downloads-2133151.html Entwicklungsumgebungen: Netbeans (im CIP Pool vorinstalliert) IntelliJ IDEA Community Edition Eclipse Dokumentation: Überblick: http://docs.oracle.com/javase/8/javaseclienttechnologies.htm API: http://docs.oracle.com/javase/8/javafx/api/toc.htm Medientechnik SS 2016 - Übung 01-8

Die Application Klasse public void start(stage primarystage) throws Exception der Ausgangspunkt für alle JavaFX Programme wird automatisch aufgerufen, sobald das Programm bereit ist, die GUI anzuzeigen. diese Methode wird von uns überschrieben public static void launch(string... args) darf nur ein einziges Mal aufgerufen werden wird meistens direkt in der main() Methode aufgerufen. Falls man eine externe Klasse als GUI starten möchte, geht das so: Application.launch(MyGUI.class,args); Medientechnik SS 2016 - Übung 01-9

Beispiel import javafx.application.application; import javafx.stage.stage; public class HelloWorld extends Application{ public void start(stage primarystage) throws Exception { public static void main(string[] args){ launch(args); HelloWorld1.java Medientechnik SS 2016 - Übung 01-10

Programm ausführen Option 1: Kommandozeile zuerst kompilieren: javac packagename/klasse.java ausführen: java packagename.klasse Unter Windows ist zu beachten: Der Pfad zum JDK muss sich in der Umgebungsvariable PATH befinden Option 2: Run Dialog von der IDE Konfiguration notwendig (Klasse mit main-methode definieren) auf Dauer komfortabler Medientechnik SS 2016 - Übung 01-11

IntelliJ IDEA Tutorial Eure Tutoren Noyan und Monika haben für euch alles vorbereitet: http://www.medien.ifi.lmu.de/lehre/ss16/mt/uebung/ressour cen/mt_help_01.pdf Medientechnik SS 2016 - Übung 01-12

Beispiel Konfiguration in IDEA Medientechnik SS 2016 - Übung 01-13

HelloWorld - Ergebnis? Es ist nichts zu sehen! Wir brauchen eine Szene für die GUI Medientechnik SS 2016 - Übung 01-14

https://www.flickr.com/photos/10785432@n03/7571290404 Author: Groume CC-BY-SA Bühne und Szene GUI Elemente brauchen eine Szene Ein Programm hat Bühnen, die aus Szenen bestehen, z.b. Hauptbildschirm + Einstellungen Wichtigste Klasse: javafx.scene.scene; (Doku) Beispiel Konstruktor: Scene scene = new Scene(root,width,height); root: Container Element, z.b. VBox, FlowPane, GridPane, BorderPane, Medientechnik SS 2016 - Übung 01-15

Layout Die Anordnung der Elemente innerhalb einer Szene wird objektorientiert modelliert Es gibt verschiedene Klassen, die als Container für andere Elemente eingesetzt werden können. Container Element A Element B Medientechnik SS 2016 - Übung 01-16

Hello World 2: FlowPane + Scene import javafx.application.application; import javafx.scene.scene; import javafx.scene.layout.flowpane; import javafx.stage.stage; public class HelloWorld2 extends Application { public void start(stage primarystage) throws Exception { int width = 200, height = 200; FlowPane flowpane = new FlowPane(); Scene scene = new Scene(flowPane, width, height); primarystage.settitle("hello World"); primarystage.setscene(scene); primarystage.show(); public static void main(string[] args){ launch(args); HelloWorld2.java Medientechnik SS 2016 - Übung 01-17

Szenengraph root VBox Ein Graph besteht aus Knoten und Kanten. Besondere Knoten: root: Wurzelknoten branch: Zweig leaf: Blatt = Ende eines Zweigs Die Knoten im Szenengraph sind entweder GUI Elemente oder Container, die wieder verschachtelt sind leaf Label Hihi leaf Button foo branch HBox leaf Button bar Medientechnik SS 2016 - Übung 01-18

Szenengraph Beispiel import javafx.application.application; import javafx.scene.scene; import javafx.scene.control.button; import javafx.scene.control.label; import javafx.scene.layout.hbox; import javafx.scene.layout.vbox; import javafx.stage.stage; public class SceneGraph extends Application { public void start(stage primarystage) throws Exception { int width = 200, height = 100; VBox root = new VBox(); Label leaf1 = new Label("Hihi"); HBox branch = new HBox(); Button leftbutton = new Button("foo"); Button rightbutton = new Button("bar"); root.getchildren().add(leaf1); root.getchildren().add(branch); branch.getchildren().add(leftbutton); branch.getchildren().add(rightbutton); Scene scene = new Scene(root, width, height); primarystage.settitle("szenengraph"); primarystage.setscene(scene); primarystage.show(); public static void main(string[] args){ launch(args); SceneGraph.java Medientechnik SS 2016 - Übung 01-19

Break Out: Eingabefelder Am Beispiel SceneGraph.java weiterarbeiten Material hier downloaden: www.medien.ifi.lmu.de/lehre/ss16/mt/uebung/ressourcen/m t_material01.zip Jetzt hinzufügen: Text Eingabefeld Passwort Eingabefeld Zeit: 8 Minuten. Medientechnik SS 2016 - Übung 01-20

Yaca (Yet another Calculator) Ziel für heutige Übung: Taschenrechner GUI Elemente kennenlernen & einsetzen Anordnung mit Layout Panes Nächste Übung: Events MVC Observer Medientechnik SS 2016 - Übung 01-21

Projekt erstellen IDE starten (ggf. workspace festlegen) Neues Java(FX) Projekt MT-Uebung anlegen [optional] Modul uebung01 erstellen. 2 neue Klassen erstellen (am besten ohne package) Yaca.java: erbt von Application Main.java: zum Starten des Programms Medientechnik SS 2016 - Übung 01-22

Startpunkt des Programms: Main.java Main.java import javafx.application.application; public class Main { public static void main(string[] args){ Application.launch(Yaca.class,args); Medientechnik SS 2016 - Übung 01-23

Basis GUI: Yaca.java Yaca.java import javafx.application.application; import javafx.scene.scene; import javafx.scene.layout.borderpane; import javafx.stage.stage; public class Yaca extends Application { public void start(stage primarystage) throws Exception { BorderPane root = new BorderPane(); Scene scene = new Scene(root); primarystage.setscene(scene); primarystage.sizetoscene(); primarystage.settitle("yet another Calculator! (Yaca)"); primarystage.show(); Medientechnik SS 2016 - Übung 01-24

Ergebnis Medientechnik SS 2016 - Übung 01-25

Buttons Yaca.java import javafx.application.application; import javafx.scene.scene; import javafx.scene.control.button; import javafx.scene.layout.borderpane; import javafx.stage.stage; public class Yaca extends Application { public void start(stage primarystage) throws Exception { BorderPane root = new BorderPane(); Button calculatebutton = new Button("Calculate!"); Button resetbutton = new Button("Clear"); root.setleft(calculatebutton); root.setbottom(resetbutton); Scene scene = new Scene(root); primarystage.setscene(scene); primarystage.sizetoscene(); primarystage.settitle("yet another Calculator! (Yaca)"); primarystage.show(); Medientechnik SS 2016 - Übung 01-26

Better Layout with FlowPane Yaca.java import javafx.application.application; import javafx.scene.scene; import javafx.scene.control.button; import javafx.scene.layout.borderpane; import javafx.scene.layout.flowpane; import javafx.stage.stage; public class Yaca extends Application { public void start(stage primarystage) throws Exception { BorderPane root = new BorderPane(); Button calculatebutton = new Button("Calculate!"); Button resetbutton = new Button("Clear"); FlowPane bottomrow = new FlowPane(); bottomrow.getchildren().addall( calculatebutton, resetbutton ); root.setbottom(bottomrow); Scene scene = new Scene(root); primarystage.setscene(scene); primarystage.sizetoscene(); primarystage.settitle("yet another Calculator! (Yaca)"); primarystage.show(); Medientechnik SS 2016 - Übung 01-27

Top Row & Text Fields Yaca.java import public class Yaca extends Application { public void start(stage primarystage) throws Exception { [ ] FlowPane toprow = new FlowPane(); TextField firstnumberfield = new TextField(); TextField secondnumberfield = new TextField(); TextField resultfield = new TextField(); toprow.getchildren().addall( firstnumberfield, secondnumberfield, resultfield ); bottomrow.getchildren().addall( calculatebutton, resetbutton ); root.settop(toprow); root.setbottom(bottomrow); [ ] Medientechnik SS 2016 - Übung 01-28

ComboBox & Label Yaca.java import public class Yaca extends Application { public void start(stage primarystage) throws Exception { [ ] Label equalslabel = new Label("="); ObservableList<String> operators = FXCollections.observableArrayList("+", "-", "*", "/"); ComboBox<String> operatorbox = new ComboBox<String>(operators); toprow.getchildren().addall( firstnumberfield, operatorbox, secondnumberfield, equalslabel, resultfield ); [ ] Medientechnik SS 2016 - Übung 01-29

Breakout: Die GUI is jetzt fast komplett. Aufgaben: Breite der Textfelder sinnvoll begrenzen, sodass sie in eine Zeile passen Standard-Wert für die Textfelder Standard-Operator in der ComboBox programmatisch festlegen Ergebnisfeld als read-only setzen Textfelder dürfen nur Zahlen enthalten Abstand (Padding oder Margin) einfügen, damit die Elemente nicht aneinander kleben Inhalt der einzelnen FlowPane Elemente zentrieren Zeit: 20 Minuten, danach gemeinsame Besprechung Medientechnik SS 2016 - Übung 01-30

Wrap-Up Quiz 1. Welche Methode der Application Klasse muss überschrieben werden? Welche Parameter nimmt sie? 2. Wofür braucht man Szenen? 3. Wie heißt die Markup Sprache, mit der JavaFX GUIs definiert werden können? 4. Welche GUI Technologie war die Mutter aller Java GUIs? 5. Wie heißt die Klasse mit der man ein Dropdown erzeugen kann? 6. Wodurch unterscheiden sich FlowPane und BorderPane? Medientechnik SS 2016 - Übung 01-31

Vielen Dank! WELCHE FRAGEN HABT IHR? Medientechnik SS 2016 - Übung 01-32

Material & Links MMP Folien: Emanuel von Zezschwitz, http://www.medien.ifi.lmu.de/lehre/ss15/mmp/ Tutorials: https://docs.oracle.com/javafx/2/get_started/jfxpub-get_started.htm http://code.makery.ch/library/javafx-8-tutorial/ http://www.javafxtutorials.com/ IDE specific Scene Builder in IntelliJ IDEA: https://docs.oracle.com/javafx/scenebuilder/1/use_java_ides/sb-withintellij.htm Medientechnik SS 2016 - Übung 01-33