JavaFX Platformy Technologiczne

Podobne dokumenty
JavaFX. Programowanie Obiektowe Mateusz Cicheński

Programowanie obiektowe

JavaFX. Technologie Biznesu Elektronicznego. Wydział Informatyki i Zarządzania Politechnika Wrocławska

1 Intefejsy graczne. 1.1 Okienka. 1.2 Komponenty

JavaFX. Zaawansowane technologie Javy 2019

Tomasz Grześ. Systemy zarządzania treścią, cz. II

Rys. 3. Kod elementów na stronie po dodaniu kontrolek podstawowych.

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

OpenLaszlo. OpenLaszlo

WPF 4.5 : księga eksperta / Adam Nathan. Gliwice, cop Spis treści

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Wybrane działy Informatyki Stosowanej

Norton Sec.3.0 STD PL CARD 1U 1Dvc 1Y Model : Norton Sec.3.0 STD PL CARD 1U 1Dvc 1Y ram sp. j.

Wybrane działy Informatyki Stosowanej

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

Swing Application Framework czyli tam i z powrotem. Copyright Piotr Kochański & Erudis,

Flex 3. Piotr Strzelczyk Wydział EAIiE Katedra Automatyki. Kraków, 2008

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

Politechnika Poznańska, Instytut Informatyki, TWO/GE. Programowanie dla ios

JavaFX. Tomasz Kubik

Efektywne tworzenie aplikacji webowych z wykorzystaniem AngularJS, HTML5 i JavaScript

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

- dodaj obiekt tekstowy: /** Maciej */ Stage { title : "First JavaFX App" scene: Scene { width: 300 height: 300 content: [ ] } }

Obiektowy model dokumentu. Katedra Mikroelektroniki i Technik Informatycznych

Laboratorium programowania urządzeń mobilnych

Kompleksowe tworzenie aplikacji klasy Desktop z wykorzystaniem SWT i

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4

Bezbolesny wstęp do CSS

Systemy operacyjne na platformach mobilnych 2 Programowanie aplikacji z graficznym interfejsem użytkownika w GTK+

BEAN VALIDATION. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Szkolenie. IBM Lotus - Podstawy projektowania aplikacji w Domino Designer 8.5. Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

PRZYJĘTE ZASADY GRY...3 ZAŁOŻENIA PROJEKTU...4 CZYM JEST I DLACZEGO QT?...5 DIAGRAM KLAS...7 DIAGRAM GRY SINGLE PLAYER...8 DIAGRAM MULTIPLAYERA...

HTML, CSS i JavaScript / Laura Lemay, Rafe Colburn, Jennifer Kyrnin. Gliwice, cop Spis treści

Programowanie obiektowe

Db4o obiektowa baza danych wersja.net

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

Java Server Faces narzędzie do implementacji w wy prezentacji

Tworzenie natywnych aplikacji na urządzenia mobilne - PhoneGap Tomasz Margalski

Implementacja aplikacji sieciowych z wykorzystaniem środowiska Qt

Informatyka I. Interfejs GUI wysokiego poziomu. Biblioteka Swing. Programowanie zdarzeniowe. Politechnika Warszawska Wydział Transportu 2018

akademia androida Service, BroadcastReceiver, ContentProvider część IV

Java Podstawy. Michał Bereta

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin

Programowanie Obiektowe GUI

Zaawansowane aplikacje internetowe - laboratorium

Praca magisterska Jakub Reczycki. Opiekun : dr inż. Jacek Rumiński. Katedra Inżynierii Biomedycznej Wydział ETI Politechnika Gdańska

Studia podyplomowe. Programowanie na platformie Microsoft Visual Studio.NET

Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych

Multimedia JAVA. Historia

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

Interfejsy w Java. Przetwarzanie równoległe. Wątki.

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Gry Komputerowe Laboratorium 1. Zajęcia organizacyjne Animacja z uwzględnieniem czasu. mgr inż. Michał Chwesiuk 1/22. Szczecin,

1 Wprowadzenie do J2EE

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Dokument hipertekstowy

Delphi podstawy programowania. Środowisko Delphi

Ćwiczenia laboratoryjne nr 8 Podstawy języka XML.

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Marcin Luckner Warsaw University of Technology Faculty of Mathematics and Information Science

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

Visual Studio instalacja

Szczegółowy opis zamówienia:

Programowanie w Javie Wykład 6 Okienka w Javie (AWT)

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Programowanie aplikacji na urządzenia mobilne

Podstawy (X)HTML i CSS

Język JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Wykład 3 Inżynieria oprogramowania. Przykład 1 Bezpieczeństwo(2) wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Wykład 4. Rendering (1) Informacje podstawowe

Programowanie obiektowe i zdarzeniowe wykład 1 Wprowadzenie do programowania zdarzeniowego

Lokalizacja Oprogramowania

Przykładowa dostępna aplikacja w Visual Studio - krok po kroku

REACT NATIVE. Anna Maziejuk Kamil Jankowski

Programowanie na poziomie sprzętu. Programowanie w Windows API

Wzorce projektowe cz. II. Wzorce projektowe cz. II 1/35

Tworzymy projekt File->New Project->Java Application, przy czym tym razem odznaczamy create main class

Tworzenie i wykorzystanie usług

VALIO Sp. z o.o. Załącznik nr 1 do Zapytania ofertowego dotyczącego zakupu licencji części systemu B2B oraz wykonania Warstwy Prezentacyjnej.

Wprowadzenie do programowania aplikacji mobilnych

Systemy operacyjne na platformach mobilnych

Koncepcja wirtualnej pracowni GIS w oparciu o oprogramowanie open source

Automatyzacja Testowania w WEB 2.0

STRONY INTERNETOWE mgr inż. Adrian Zapała

HTML (HyperText Markup Language) hipertekstowy język znaczników

Tworzenie i wykorzystanie usług sieciowych

Idea of responsive web design. Roman Białek Mateusz Mikołajczak Kacper Palmowski Krzysztof Szot

[Android] Podstawy programowania

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

GLKit. Wykład 10. Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) #import "Fraction.h" #import <stdio.h>

System Obsługi Wniosków

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

GUI - projektowanie interfejsów cz. II

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

The Graphics View Framework. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5. he Graphics View Framework - architektura

Transkrypt:

JavaFX Platformy Technologiczne Michał Wójcik michal.wojcik@eti.pg.gda.pl http://mwojcik.eti.pg.gda.pl Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechnika Gdańska 5 marca 2014 Michał Wójcik (KASK, ETI, PG) JavaFX 5 marca 2014 1 / 22

JavaFX JavaFX platforma rozwijająca platformy klienckie Java w celu umożliwienia łatwego tworzenia i wdrażania aplikacji RIA zachowujących się tak samo na różnych platformach. Zalety: wykorzystanie języka Java, wykorzystanie tej samej technologii po stronie klienta i serwera, uruchomienie w różnych środowiskach. Michał Wójcik (KASK, ETI, PG) JavaFX 5 marca 2014 2 / 22

Pomocne Źródła I [1] JavaFX 2.2 Documentation. http://docs.oracle.com/javafx/2/api/. [2] The JavaFX Tutorials. http://docs.oracle.com/javafx/. Michał Wójcik (KASK, ETI, PG) JavaFX 5 marca 2014 3 / 22

JavaFX elementy Elementy JavaFX 2.2: Java API, nowy silnik graficzny: Prism hardware accelerated graphics pipeline, Glass windowing toolkit; FXML deklaratywny język znaczników pozwalający na tworzenie GUI, UI controls baza różnorodnych kontrolek interfejsu użytkownika, sample applications przedstawienie różnych możliwości technologii JavaFX z przykładami kodów. Michał Wójcik (KASK, ETI, PG) JavaFX 5 marca 2014 4 / 22

Scene Graph Scene Graph punkt startowy dla konstruowania aplikacji JavaFX. Hierarchiczne drzewo węzłów reprezentujących wizualne elementy. Rodzaje zawartości: Nodes kształty (2-D, 3-D), obrazki, multimedia, tekstu, kontrolki. Michał Wójcik (KASK, ETI, PG) JavaFX 5 marca 2014 5 / 22

Graphics System Graphics System obsługuje zarówno grafikę 2-D i 3-D sceny, zapewnia softwareowe renderowanie w momencie gdy sprzętowe wsparcie nie jest dostępne. Prism obsługuje proces renderowania, może działać zarówno softwarowo jak i sprzętowo: DirectX 9 dla Windows XP i Windows Vista, DirectX 11 dla Windows 7, OpenGL dla Mac, Linux, Embedded, Java2D gdy wsparcie sprzętowe nie jest dostępne, dostarczana ze wszystkimi dystrybucjami JRE. Quantum Toolkit łączy Prim i Glass Windowing Toolkit udostępniając je wyższej warstwie, zarządza regułami obsługi wątków związanymi z renderowaniem i obsługą zdarzeń. Michał Wójcik (KASK, ETI, PG) JavaFX 5 marca 2014 6 / 22

Glass Glass Windowing Toolkit dostarcza natywne operacje, takie jak: zarządzanie oknami, timers, surfaces. Jest warstwą zależną od platformy, która łączy platformę JavaFX z natywnym systemem. Zarządza kolejką zdarzeń, wykorzystuje systemową natywną kolejkę zdarzeń do kolejkowania wątków. Działa w tym samym wątku co aplikacja JavaFX. Rodzaje wątków: JavaFX application thread główny wątek aplikacji, wszystkie dostępy do wyświetlanej sceny muszą być realizowane w tym wątku, nie jest tożsamy z Swing/AWT EDT, Prism render thread renderowanie poza obsługą zdarzeń, pozwala na na renderowanie ramki N gdy przetwarzana jest ramka N+1, Media thread działa w tle, synchronizuje ostatnie ramki za pomocą scene graph wykorzystując JavaFX application thread. Michał Wójcik (KASK, ETI, PG) JavaFX 5 marca 2014 7 / 22

Kontrolki Kontrolki UI: realizowane jako węzły sceny, przenośne pomiędzy platformami, wygląd modyfikowany poprzez CSS, javafx.scene.control: Label, Button, Radio Button, Toggle Button, Checkbox, Choice Box, Text Field, Password Field, Scroll Bar, Scroll Pane, List View, Table View, Separator, Slider, Progress Bar, Progress Indicator, Hyperling, Tooltip, HTML Editor, Titled Pane, Accordion. Michał Wójcik (KASK, ETI, PG) JavaFX 5 marca 2014 8 / 22

Data Binding Konwencja JavaBeans: public class Person { private int age ; public Person ( ) { age = 0 ; public f i n a l void setage ( int age ) { this. age = age ; public f i n a l int getage ( ) { return age ; Michał Wójcik (KASK, ETI, PG) JavaFX 5 marca 2014 9 / 22

Data Binding Nowa konwencja JavaBeans: public class Person { private I n t e g e r P r o p e r t y age = new S i m p l e I n t e g e r P r o p e r t y ( ) ; public Person ( ) { age. s e t ( 0 ) ; public f i n a l void setage ( int age ) { this. age. s e t ( age ) ; public f i n a l int getage ( ) { return age. get ( ) ; public I n t e g e r P r o p e r t y ageproperty ( ) { return age ; Michał Wójcik (KASK, ETI, PG) JavaFX 5 marca 2014 10 / 22

Data Binding Reagowanie na zmianę własności: Person p = new Person ( ) ; p. ageproperty ( ). a d d L i s t e n e r (new ChangeListener ( ) { @Override public void changed ( ObservableValue o, Object oldval, Object new Val ) { ) ; Michał Wójcik (KASK, ETI, PG) JavaFX 5 marca 2014 11 / 22

Kolekcje JavaFX wprowadza rozszerzenie dla standardowych kolekcji (javafx.collections): interfejsy: ObeservableList lista pozwalająca na śledzenie zmian, ListChangeListener otrzymuje notyfikacje o zmianach na liście, ObservableMap mapa pozwalająca na śledzenie zmian, MapChangeListener otrzymuje notyfikacje o zmianach w mapie; klasy: FXCollections kopia java.util.collections, ListChangeListener.Change zmiany na liście, MapChangeListener.Change zmiany w mapie. Michał Wójcik (KASK, ETI, PG) JavaFX 5 marca 2014 12 / 22

Layout Kontenery pozwalają na wygodne i dynamiczne układanie kontrolek UI na scenie: BorderPane regiony: top, bottom,right, left, center, HBox jeden rząd poziomo, VBox jeden rząd pionowo, StackPane stos, tworzenie skomplikowanych elementów poprzez składanie, GridPane siatka, FlowPane następujące po sobie elementy poziomo lub pionowo, TilePane siata o elementach w równym rozmiarze, AnchorPane zakotwiczenie elementów: top, bottom, left, right, center. Michał Wójcik (KASK, ETI, PG) JavaFX 5 marca 2014 13 / 22

Layout Zmiana rozmiaru panelu powoduje automatyczną zmianę rozmiarów niektórych węzłów. Węzły automatycznie zmieniające rozmiar: kontrolki UI, panele. Węzły nie zmieniające rozmiaru (stałe): kształty, item teksty, grupy. Michał Wójcik (KASK, ETI, PG) JavaFX 5 marca 2014 14 / 22

Layout Rozmiar definiowany przez: preferred size, maximum size, minimum size. Ułożenie kontrolek w panelu definiowane przez: HPos ułożenie w poziomie, VPos ułożenie w pionie, Pos ułożenie w pionie i poziomie. Michał Wójcik (KASK, ETI, PG) JavaFX 5 marca 2014 15 / 22

CSS Interfejs aplikacji JavaFX może być modyfikowany za pomocą CSS (Cascading Style Sheet): zmiana kodu źródłowego nie jest konieczna, stosowane asynchronicznie, mogą być zastosowane podczas działania aplikacji, dynamiczna zmiana wyglądu, bazuje na W3C CSS v2.1 z wybranymi dodatkami z v3, własne selektory. Michał Wójcik (KASK, ETI, PG) JavaFX 5 marca 2014 16 / 22

CSS Zastosowanie CSS:.my-button klasa MyButton, #my-button fx:id="my-button",.radio-button.dot styl wypunktowania w RadioButton,.radio-button:hover. Działanie: przedrostek -fx- przy właściwościach,.root odnosi się do wszystkich elementów na scenie, void Node.setId(String id) przypisanie fx-id w kodzie, void Node.setStyle(String style) zastosowanie stylu w kodzie: button1.setstyle("-fx-background-clor: slateblue; -fx-text-fill: white;"); Michał Wójcik (KASK, ETI, PG) JavaFX 5 marca 2014 17 / 22

CSS Scene s c e n e = new Scene (new Group ( ), 500, 400) ; scene, g e t S t y l e s h e e t s ( ). add ( " path / s t y l e s h e e t. c s s " ) ;. button { fx f o n t : 16px " S e r i f " ; fx padding : 1 0 ; fx background c o l o r : #CCFF99 ; #my button { Michał Wójcik (KASK, ETI, PG) JavaFX 5 marca 2014 18 / 22

FXML FXML pozwala na definiowanie interfejsu użytkownika: oparty na XML, nie kompilowany, możliwość tworzenia interfejsu dynamicznie. Michał Wójcik (KASK, ETI, PG) JavaFX 5 marca 2014 19 / 22

FXML BorderPane border = new BorderPane ( ) ; Label l a b e l 1 = new Label ( "Page T i t l e " ) ; border. settop ( l a b e l 1 ) ; Label l a b e l 2 = new Label ( "Some data here " ) ; border. s e t C e n t e r ( l a b e l 2 ) ; <BorderPane> <top> <Label f x : i d=" l a b e l 1 " t e x t="page T i t l e "/> </top> <c e n t e r <Label f x : i d=" l a b e l 2 " t e x t="some data here "/> </center > </BorderPane> Michał Wójcik (KASK, ETI, PG) JavaFX 5 marca 2014 20 / 22

FXML Parent r o o t = FXMLLoader. load ( g e t C l a s s ( ). getresource ( " fxml \_example. fxml " ), ResourceBundle. getbundle ( " fxmlexample. fxml \_example" ) ) ; public class FXMLBrowserController implements I n i t i a b l e { @FXML Label l a b e l 1 ; @FXML Label l a b e l 2 ; @Override public void i n i t i a l i z e (URL url, ResourceBundle rb ) { Michał Wójcik (KASK, ETI, PG) JavaFX 5 marca 2014 21 / 22

Wdrożenie Aplikacje JavaFX mogą być uruchomione na trzy sposoby: samodzielna, uruchamiana jako aplikacja desktopowa, przez przeglądarkę, aplikacja wbudowana w stronę, Web Start. Michał Wójcik (KASK, ETI, PG) JavaFX 5 marca 2014 22 / 22