Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

gmail.com Instytut Informatyki UPH 1/35 dr Grzegorz Terlikowski Java FX.

Podobne prezentacje


Prezentacja na temat: "gmail.com Instytut Informatyki UPH 1/35 dr Grzegorz Terlikowski Java FX."— Zapis prezentacji:

1 gmail.com Instytut Informatyki UPH 1/35 dr Grzegorz Terlikowski Java FX

2 gmail.com Instytut Informatyki UPH 2/35 JavaFX  JavaFX jest rozwiązaniem RIA  maj pierwsze informacje.  4 grudzień 2008 – upublicznienie wersji 1.0.  Technologia ta miała zastąpić aplety, będące już stosunkowo starym rozwiązaniem niesprostającym dzisiejszym wymaganiom.  JavaFX zostało w pełni zintegrowane z Javą 8 – co czyni JavaFX następcą bibliotek Swing.  Zastosowanie: podobne do Flash i Silverlight.

3 gmail.com Instytut Informatyki UPH 3/141 JavaFX – Możliwości  Łatwe budowanie interfejsów graficznych zarówno za pomocą kontrolek JavaFX, jak i kontrolek Swing,  Wzbogacanie UI aplikacji o statyczne lub dynamiczne elementy graficzne Java2D i Java3D,  Aplikację można uruchomić :  na pulpicie,  w przeglądarce - jako aplet.  na urządzeniu mobilnym,  Obsługa multimediów.

4 gmail.com Instytut Informatyki UPH Standard Java Tools for Easy Development  Edytor kodu źródłowego z kolorowaniem syntaktycznym, autouzupełnianiem kodu, refaktoryzacją, itd.  Debugowanie kodu,  Kreator projektu dla łatwiejszego tworzenia aplikacji JavaFX Inne IDE dla Java JavaFX – Narzędzia

5 gmail.com Instytut Informatyki UPH JavaFX Scene Builder dla szybkiego projektowania UI  Narzędzie WYSIWYG do tworzenia GUI  Kontrolki przeciągane są z palety na scenę  Generowanie plików w formacie FXML, które mogą być użyte wewnątrz projektu NetBeans lub Eclipse itd..  Może być użyte do tworzenia GUI dla aplikacji desktopowych i webowych JavaFX – Narzędzia – JavaFX Scene Builder

6 gmail.com Instytut Informatyki UPH 6/141 JavaFX – Cechy FXML JavaFX 2.2 wprowadziła deklaratywny język FXML, który wyparł język skryptowy JavaFx Script, Cechy:  Bazuje na XML,  Stanowi alternatywę do tworzenia UI w Java.  Łatwy do nauki i intuicyjny dla projektantów posiadających doświadczenie w technologiach webowych lub innych technologiach znacznikowych.  Możliwość osadzenia skryptów wewnątrz FXML. Każdy język skryptowy wspierany przez JVM może być użyty:  JavaScript,  Groovy,  Scala.

7 gmail.com Instytut Informatyki UPH 7/141 JavaFX – FXML – przykład Parent root = FXMLLoader.load(getClass().getResource("fxml\example.fxml"), ResourceBundle.getBundle("fxmlexample.fxml\example")) ; BorderPane border = new BorderPane ( ) ; Label label1 = new Label("Page Title") ; border.setTop(label1) ; Label label2 = new Label("Some data here") ; border.setCenter(label2) ; public class FXMLBrowserController implements Initiable Label Label public void initialize(URL url, ResourceBundle rb ){... } }

8 gmail.com Instytut Informatyki UPH 8/141 JavaFX – Architektura wysokopoziomowa  Glass Windowing Toolkit: dostarcza natywnych systemowych usług.  Prism: renderowanie grafiki sprzętowo lub programowo.  Media Engine – wsparcie dla multimediów.  Web Engine silnik przeglądarki internetowej, bazuje na WebKit.  Trzy główne wątki – aplikacji, Prism, Media

9 gmail.com Instytut Informatyki UPH 9/141 JavaFX – Scene Graph  Scene Graph — punkt startowy dla konstruowania aplikacji JavaFX.  Hierarchiczne drzewo węzłów reprezentujących wizualne elementy,  Rodzaje zawartości:  Węzły — kształty (2-D, 3-D), obrazki, multimedia, tekst, kontrolki  Stany: transformacje(pozycjonowanie i orientacja węzłów), efekty wizualne,  Efekty: proste obiekty, które zmieniają wygląd węzłów: Blur, Shadow.

10 gmail.com Instytut Informatyki UPH 10/141 JavaFX – System graficzny Graphics System — obsługuje zarówno grafikę 2D i sceny 3D, 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,  Java2D gdy wsparcie sprzętowe nie jest dostępne, dostarczana ze wszystkimi dystrybucjami JRE. Quantum Toolkit — łączy Prism 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ń.

11 gmail.com Instytut Informatyki UPH 11/141 JavaFX – System graficzny  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.

12 gmail.com Instytut Informatyki UPH 12/141 JavaFX – System graficzny 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,  Prism render thread — renderowanie poza obsługą zdarzeń, pozwala 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.

13 gmail.com Instytut Informatyki UPH 13/141 JavaFX – Kontrolki Kontrolki UI realizowane są 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,  Progress Indicator,  Hyperling, Tooltip,  Progress Bar,  HTML Editor,  List View,  Table View,  Separator,  Slider,  Titled Pane,  Accordion theme-for-javafx-8/

14 gmail.com Instytut Informatyki UPH 14/141 JavaFX – Kontenery  Kontenery pozwalają na wygodne i dynamiczne rozkładanie kontrolek wewnątrz SceneGraph.  Klasy kontenerów rozkładów znajdują się w pakiecie javafx.scene.layout.  JavaFx posiada następujące klasy kontenerów:  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,

15 gmail.com Instytut Informatyki UPH 15/141 JavaFX – 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.

16 gmail.com Instytut Informatyki UPH 16/141 JavaFX – Współpraca z CSS  JavaFX wykorzystuje tę samą specyfikację CSS co HTML.  Zmienna stylesheet komponentu Scene, jest sekwencją, w związku z czym można do niej przypisać wiele ścieżek do różnych plików CSS.  Ponadto istnieje możliwość określenia stylu bezpośrednio w kodzie aplikacji poprzez wykorzystanie właściwości style kontrolki/kontenera, style: "-fx-background-color: yellow ";  Klasę stylu określa właściwość styleClass.

17 gmail.com Instytut Informatyki UPH 17/141 JavaFX – Obsługa mediów – API  Klasy do obsługi mediów zlokalizowane są w pakiecie java.scene.media.  Media obsługiwane są m.in. przez 3 główne klasy: Media  reprezentuje plik do odtwarzania, MediaPlayer  komponent odtwarzający plik opisany przez obiekt typu Media. MediaView  węzeł w SceneGraph, reprezentujący widok na którym zostanie wyświetlony film,

18 gmail.com Instytut Informatyki UPH 18/141 JavaFX – Obsługa mediów – public void start(Stage primaryStage) { final String mediaUrl = "http://download.oracle.com/otndocs/products/javafx/oow flv"; // create media player Media media = new Media( mediaUrl ); MediaPlayer mediaPlayer = new MediaPlayer(media); mediaPlayer.setAutoPlay( true ); // create mediaView and add media player to the viewer MediaView mediaView = new MediaView( mediaPlayer ); root.getChildren().add( mediaView ); primaryStage.setScene(new Scene(root, 600, 500)); primaryStage.show(); }

19 gmail.com Instytut Informatyki UPH WebEngine  Dostarcza podstawowej funkcjonalności do przeglądania stron webowych.  Wspiera interakcje z użytkownikiem: nawigacja za pomocą linków, przesyłanie formularzy.  Bazuje na WebKit. WebView  Strona Web jako węzeł – Node w SceneGraph Mogą być zastosowane efekty  Enkapsulacja obiektu WebEngine JavaFX – Silnik webowy

20 gmail.com Instytut Informatyki UPH JavaFX – Silnik public void start(Stage primaryStage) { WebView webView = new WebView(); webView.getEngine().load( "http://javafx.com" ); root.getChildren().add( webView ); primaryStage.setScene(new Scene(root, 600, 500)); primaryStage.show(); }

21 gmail.com Instytut Informatyki UPH JavaFX – wykresy

22 gmail.com Instytut Informatyki UPH GaussianBlur InnerShadow SepiaTone Reflection Lighting JavaFX – Efekty

23 gmail.com Instytut Informatyki UPH JavaFX – Efekty – public void start(Stage primaryStage) { Image iJavaFx = new Image( getClass().getResourceAsStream( "indice.jpg" )); ImageView ivJavaFx = new ImageView(); root.getChildren().add( ivJavaFx ); Reflection r = new Reflection(); r.setFraction( 0.9 ); root.setEffect( r ); primaryStage.setScene(new Scene(root, 600, 500)); primaryStage.show(); }

24 gmail.com Instytut Informatyki UPH Transformacje rect.setTranslateX(40); rect.setTranslateY(10); Rectangle rect=new Rectangle(0,0,60,60); rect.setFill(Color.DODGERBLUE); rect.setArcWidth(10); rect.setArcHeight(10); rect.setRotate(45); rect.setScaleX(2); rect.setScaleY(0.5); Shear shear = new Shear(0.7, 0); rect.getTransforms().add(shear); JavaFX – transformacje

25 gmail.com Instytut Informatyki UPH JavaFX – transformacje – przykład Group circles = new Group(); for (int i = 0; i < 30; i++) { Circle circle = new Circle(150, Color.web("white", 0.05)); circle.setStrokeType(StrokeType.OUTSIDE); circle.setStroke(Color.web("white", 0.16)); circle.setStrokeWidth(4); circle.setTranslateX(random() * 800); circle.setTranslateY(random() * 600); circles.getChildren().add(circle); } root.getChildren().add(circles);

26 gmail.com Instytut Informatyki UPH  Tworzą zależności między właściwością oraz wartością, która może się zmieniać.  Wysokopoziomowe API  Łatwe w użyciu  Wystarczające dla większości zastosowań  Niskopoziomowe API  Zastosowanie w bardziej skomplikowanych sytuacjach  Zoptymalizowane pod kątem szybszego wykonywania się. JavaFX – Binding

27 gmail.com Instytut Informatyki UPH  Podstawowe dla wysokopoziomowego bindingu  Konkretne typy dla wszystkich podstawowych typów, String i Object  DoubleProperty, StringProperty, itd..  Proste API  bind / unbind  bindBidirectional / unbindBidirectional  isBound JavaFX – Binding - właściwości

28 gmail.com Instytut Informatyki UPH private SimpleDoubleProperty topXProperty = new SimpleDoubleProperty(); private SimpleDoubleProperty topYProperty = new SimpleDoubleProperty(); Line foldLine = new Line(); foldLine.setEndX(200); foldLine.setEndY(200); foldLine.startXProperty().bind(topXProperty); foldLine.startYProperty().bind(topYProperty);... topXProperty.set(tx); topYProperty.set(ty); JavaFX – Binding – przykład prostego bindingu

29 gmail.com Instytut Informatyki UPH public class Person { private IntegerProperty age = new SimpleIntegerProperty(); public Person(){ age.set(0); } public final void setAge (int age){ this.age.set(age); } public final int getAge (){ return age.get(); } public IntegerProperty ageProerty( ){ return age ; } Nowa konwencja JavaBeans Person p = new Person() ; p.ageProperty().addListener (new ChangeListener ( ) public void changed(ObservableValue o, Object oldVal, Object new Val ){ } }); Reagowanie na zmianę właściwości JavaFX – Binding – przykład bindingu z wykorzystaniem JB

30 gmail.com Instytut Informatyki UPH 30/141 JavaFX – Animacje  Animacje są kluczową cechą bogatych aplikacji internetowych.  Klasy służące do animacji obiektów są dostępne w pakiecie javafx.animation.  JavaFX wspiera dwa typy animacji:  Animacje oparte na klatkach kluczowych - powszechny sposób tworzenia animacji. Wykorzystywane są m.in we Flash, Flex (od wersji 4) oraz Silverlight.  Tranzycje – proste animacje typu from/to/by.

31 gmail.com Instytut Informatyki UPH  Predefiniowane, animacje z pojedynczym celem  Fade, Path, Pause, Rotate, Scale, Translate,  Mogą określać wartości: from, to i by.  Kontenery tranzycji  Parallel, Sequance,  Mogą być dowolnie zagnieżdżane. JavaFX – Animacje – Tranzycje

32 gmail.com Instytut Informatyki UPH final Rectangle rectPath = new Rectangle (0, 0, 40, 40); rectPath.setArcHeight(10); rectPath.setArcWidth(10); rectPath.setFill(Color.ORANGE);... Path path = new Path(); path.getElements().add(new MoveTo(20,20)); path.getElements().add(new CubicCurveTo(380, 0, 380, 120, 200, 120)); path.getElements().add(new CubicCurveTo(0, 120, 0, 240, 380, 240)); PathTransition pathTransition = new PathTransition(); pathTransition.setDuration(Duration.millis(4000)); pathTransition.setPath(path); pathTransition.setNode(rectPath); pathTransition.setOrientation( PathTransition.OrientationType.ORTHOGONAL_TO_TANGENT); pathTransition.setCycleCount(Timeline.INDEFINITE); pathTransition.setAutoReverse(true); pathTransition.play(); JavaFX – Animacje – Tranzycje – Przykład

33 gmail.com Instytut Informatyki UPH  Timeline  Modyfikuje wartości zmiennych wyspecyfikowanych w KeyFrames.  KeyFrame:  określa, która zmienna powinna mieć daną wartość w danym czasie.  KeyValue:  Wartość, która ma być interpolowana w danym przedziale czasowym.  Tranzycje i Timelines  Niestandardowe animacje mogą wykorzystywać Timeline w blokach Parallel i Sequence. JavaFX – Animacje – Klatki kluczowe

34 gmail.com Instytut Informatyki UPH Timeline timeline = new Timeline(); for (Node circle: circles.getChildren()) { timeline.getKeyFrames().addAll( new KeyFrame(Duration.ZERO, new KeyValue(circle.translateXProperty(), circle.getTranslateX()), new KeyValue(circle.translateYProperty(), circle.getTranslateY()) ), new KeyFrame(new Duration(5000), new KeyValue(circle.translateXProperty(), 400), new KeyValue(circle.translateYProperty(), 300) ), new KeyFrame(new Duration(10000), new KeyValue(circle.translateXProperty(), circle.getTranslateX()), new KeyValue(circle.translateYProperty(), circle.getTranslateY()) ), new KeyFrame(new Duration(12500), new KeyValue(circle.translateXProperty(), random() * 800), new KeyValue(circle.translateYProperty(), random() * 600) ) ); } timeline.play(); JavaFX – Animacje – Klatki kluczowe – Przykład

35 gmail.com Instytut Informatyki UPH 35/141 JavaFX – Wdrażanie aplikacji Aplikacje JavaFX, mogą być wdrożone 1.Jako zwykła aplikacja desktopowa, 2.Java Plugin – umożliwiający uruchomienie apletu wewnątrz przeglądarki, 3.Java Web Start – narzędzie wykorzystujące protokół JNLP (Java Network Launching Protocol), który umożliwia pobranie zdalnej aplikacji i uruchomienie jej na pulpicie, Network

36 gmail.com Instytut Informatyki UPH 36/35 HTML 5 vs Flex/Silverlight/JavaFX  Jeżeli zasięg aplikacji jest ważny (co jest wymogiem aplikacji konsumenckich) i ma być ona umiarkowanie interaktywna powinniśmy wybrać HTML5, który ma (lub w niedalekiej przyszłości będzie miał) największy zasięg.  Jeżeli chcemy utworzyć aplikację wysoce interaktywną (być może też wykorzystać umiejętności programistów przez co zmniejszyć koszty produkcji) powinniśmy wybrać Silverlight, Flex lub JavaFX.

37 gmail.com Instytut Informatyki UPH 37/35 Flex vs Silverlight (1) Flex i Silverlight są technologiami do siebie podobnymi, tak więc jak dokonać wyboru?  Silverlight jest oczywistym wyborem dla firm, które mocno zainwestowały w produkty firmy Microsoft. Znajomość języków programowania i narzędzi powoduje płynne przejście na Silverlight.  Flex powinien być wybrany przez te firmy, które bazują na oprogramowaniu Java. Podobne środowiska IDE oraz frameworki umożliwiające połączenie Flex i Java sprawiają, że jest to dobry wybór.

38 gmail.com Instytut Informatyki UPH 38/35 Flex vs Silverlight (2) Należy mieć też na uwadze, że poziom przyjęcia aplikacji Flash/Flex jest dużo wyższy od aplikacji Silverlight.


Pobierz ppt "gmail.com Instytut Informatyki UPH 1/35 dr Grzegorz Terlikowski Java FX."

Podobne prezentacje


Reklamy Google