Java FX. Artur Dudziński, Bartosz Janiak, Roger Zacharczyk



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

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

Programowanie obiektowe

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Programowanie obiektowe

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Programowanie obiektowe

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

KOTLIN. Język programowania dla Androida

Tworzenie aplikacji w języku Java

Programowanie obiektowe

Programowanie RAD Delphi

Programowanie Komputerów

Programowanie obiektowe

Google Web Toolkit. Piotr Findeisen

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

PROGRAMOWANIE W ŚRODOWISKU FLASH wykład 2

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Narzędzia i platformy programowania w Internecie

JavaScript funkcyjność

Scenariusz Web Design DHTML na 10 sesji. - Strony statyczne I dynamiczne. - Dodawanie kodu VBScript do strony HTML. Rysunek nie jest potrzebny

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Java Programowanie Obiektowe Ćwiczenie 1- wprowadzenie

2. Składnia, środowisko i konwencje w Javie

Wybrane działy Informatyki Stosowanej

Programowanie obiektowe

Zaawansowane aplikacje WWW - laboratorium

Programowanie w Internecie. Java

Java jako język programowania

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH

Platformy Programistyczne Podstawy języka Java

JavaFX. Programowanie Obiektowe Mateusz Cicheński

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Powtórka algorytmów. Wprowadzenie do języka Java.

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Microsoft IT Academy kurs programowania

Wybrane działy Informatyki Stosowanej

Podstawy języka Java. przygotował:

Wprowadzenie do języka Java

Programowanie obiektowe

WPROWADZENIE DO JĘZYKA JAVA

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Programowanie obiektowe

MATERIAŁY DO ZAJĘĆ II

Multimedia JAVA. Historia

Podstawy programowania. Wprowadzenie

Kurs WWW. Paweł Rajba.

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Wykład 2 Składnia języka C# (cz. 1)

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Java w 21 dni / Rogers Cadenhead. Gliwice, cop Spis treści. O autorze 11. Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA

1 Atrybuty i metody klasowe

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

Wykład 4: Klasy i Metody

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Język ludzki kod maszynowy

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

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

Akademia ETI. Wprowadzenie do programowania w Javie PG Java User Group Przemysław Kulesza

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

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Testy jednostkowe - zastosowanie oprogramowania JUNIT 4.0 Zofia Kruczkiewicz

Kurs programowania. Wykład 9. Wojciech Macyna

Język programowania Scala / Grzegorz Balcerek. Wyd. 2. Poznań, cop Spis treści

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

JAVASCRIPT PODSTAWY. opracowanie: by Arkadiusz Gawełek, Łódź

Wykorzystywanie parsera DOM w programach Java i PL/SQL

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main

FLEX ( ) Przygotowanie środowiska developerskiego Hello world w MXML Hello world w ActionScript

Podstawy programowania skrót z wykładów:

PODSTAWY BAZ DANYCH 13. PL/SQL

Definicje klas i obiektów. Tomasz Borzyszkowski

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

Laboratorium Programowania Kart Elektronicznych

Właściwości i metody obiektu Comment Właściwości

Programowanie obiektowe

Programowanie Obiektowe GUI

Języki i metody programowania Java. Wykład 2 (część 2)

Systemy operacyjne na platformach mobilnych

Programowanie Obiektowe Ćwiczenie 4

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

Dokumentacja do API Javy.

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

1 Podstawy c++ w pigułce.

Python. Wprowadzenie. Jolanta Bachan

Db4o obiektowa baza danych wersja.net

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

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

Powtórka algorytmów. Wprowadzenie do języka Java.

DYNAMICZNE PRZYDZIELANIE PAMIECI

Transkrypt:

Java FX Artur Dudziński, Bartosz Janiak, Roger Zacharczyk

Plan prezentacji 1.Rich Internet Application a)rozwój b)dostępne narzędzia 2.JavaFX a)charakterystyka b)platformy 3.JavaFX Script 4.Narzędzia JavaFX 5.Składnia 6.Przykłady praktyczne

Rich Internet Application Rok 2001 Cechy aplikacji desktopowej One-screen-application

RIA - rozwój

RIA - cechy Praca w trybie offline Efektywne wykorzystanie łączy Jednoekranowa prezentacja danych Brak przeładowywania strony Dowolna kolejność wprowadzania danych Bogaty interfejs graficzny

Przykłady Virtual Earth MS Popfly Adobe Photoshop Express

Narzędzia Adobe Flex Adobe Flash MXML ActionScript Expression Blend Silverligt WPF XAML + C# / VB.NET Parasoft WebKing testowanie

JavaFX Grudzień 2008 wersja 1.0 Maj 2009 wersja 1.2

JavaFX - cechy Pełna integracja z Java Runtime Zadziała wszędzie tam gdzie znajduje się JRE Skupienie na wizualnej zawartości aplikacji Szybkie tworzenie pełnych wyrazu GUI Bogaty zbiór bibliotek dla grafiki, mediów i web serwisów Wykorzystywanie bibliotek Javy Zalety bibliotek JavaFX połączone z bardzo szeroką funkcjonalnością oferowaną przez Java

Platform Diagram

Nie tylko Desktop JFX Mobile 12 luty 2009 jako część JavaFX 1.1 Integracja z JavaME JavaFX TV Tworzenie aplikacji skierowanych na platformy TV 2009/2010

Liczby W czerwcu 2009 ilość pobrań SKD sięgła 400 000 Obecnie dostępna na 250mln komputerów Na świecie jest 2.6 miliarda(!) urządzeń mobilnych korzystających z Javy W 2008 roku 8 na 10 kupionych urządzeń mobilnych było opartych na technologii Java

JavaFX Script Skryptowy język programowania Sładnia przypominająca JavaScript W pełni zorientowany obiektowo Zawiera bardzo duże ilości efektów graficznych, statycznych i ruchomych Dostępny na zasadach Powszechnej Licencji Publicznej GNU Licencja open-source uzyskana w 2007r.

Designer Developer workflow Wsparcie we współpracy programista projektant, grafik itp. JavaFX pozwala na skupieniu się na kreatywności zamiast na programowaniu Możliwość przygotowania grafik i animacji w programach graficznych a następnie wyeksportowanie ich do formatu JavaFX Script

Narzędzia JavaFX (1) Netbeans IDE 6.5.1 for JavaFX Zawiera JavaFX SDK oraz wiele przykładowych aplikacji JavaFX Netbeans Plugin

Narzędzia JavaFX (2) Inne środowiska programistyczne Wymagane JavaFX SDK zawierające kompilator, biblioteki uruchomieniowe, przykłady, emulator przenośnych urządzeń Eclipse - Plugin o wolnym kodzie

Narzędzia JavaFX (3) JavaFX Production Suite: pakiety narzędzi i pluginów Photoshop CS3, Illustrator CS3 JavaFX Media Factory: konwertowanie grafiki wektorowej (SVG) do JavaFX Script

Składnia Java FX Deklarowanie zmiennych Typy zmiennych Funkcje Sekwencje Operatory Wyrażenia Klasy i obiekty Tworzenia aplikacji graficznych

Deklarowanie zmiennych def numone = 100; def numtwo = 2; var result; Type inference

Typy zmiennych String Number i Integer Boolean Duration Void Null

Typy zmiennych: String (1) var s1 = 'Hello'; var s2 = "Hello"; Można osadzać apostrofy w cudzysłowie i odwrotnie var napis1 = 'ala"ma"kota'; var napis2 = "ala'ma'kota"; println(napis1); // ala ma kota println(napis2); // ala ma kota

Typy zmiennych: String (2) Wyrażenia osadzone def name = 'Joe'; var s = "Hello {name"; // s = 'Hello Joe' def answer = true; var s = "The answer is {if (answer) "Yes" else "No""; // s = 'The answer is Yes'

Typy zmiennych: String (3) Konkatenacja stringów def one = "This example "; def two = "joins two strings."; def three = "{one{two"; println(three); // 'This example joins two strings.'

Typy zmiennych: Number i Integer def numone = 1.0; // compiler will infer Number def numtwo = 1; // compiler will infer Integer Można jawnie zadeklarować typ zmiennej: def numone : Number = 1.0; def numtwo : Integer = 1; Pełna lista typów liczbowych: Byte, Short, Number, Integer, Long, Float, Double, Character

Typy zmiennych: Boolean var isasleep = true; Wyrażenie warunkowe: if (isasleep){ wakeup();

Typy zmiennych: Duration var a = 5ms; // 5 milliseconds var b = 10s; // 10 seconds var c = 30m; // 30 minutes var d = 1h; // 1 hour Przydatne przy tworzeniu animacji

Typy zmiennych: Void function printme() : Void { println("i don't return anything!"); Pisane z dużej litery!

Typy zmiennych: Null function checkarg(arg1: Address){ if(arg1 == null){ println("i received a null argument."); else{ println("the argument has a value.");

Funkcje: ogólna postać (1) Funkcja Void function nazwa_funkcji([argumenty]) { [ciało funkcji] lub function nazwa_funkcji([argumenty]) : Void { [ciało funkcji]

Funkcje: ogólna postać (2) Funkcja zwracająca wartość function nazwa_funkcji([argumenty]) { [ciało funkcji] return zwracana_wartość; lub function nazwa_funkcji([argumenty]) : zwracany_typ { [ciało funkcji] return zwracana_wartość;

Funkcje: przykład 1 def numone = 100; def numtwo = 2; var result; add(); //100 + 2 = 102 function add(){ result = numone + numtwo; println("{numone + {numtwo = {result");

Funkcje: przykład 2 function add(argone: Integer, argtwo: Integer) { var result = argone + argtwo; println("{argone + {argtwo = {result"); add(1,2); //1 + 2 = 3 function add(argone, argtwo) { var result = argone + argtwo; println("{argone + {argtwo = {result"); add(1,2); //1.0 + 2.0 = 3.0 Kolejność definiowania i wywoływania funkcji dowolna

Funkcje: wywołanie z linii komend //plik kalkulator.fx function run(args : String[]){ // Convert Strings to Integers def numone = java.lang.integer.parseint(args[0]); def numtwo = java.lang.integer.parseint(args[1]); // Invoke Functions add(numone,numtwo); function add(argone: Integer, argtwo: Integer){ var result = argone + argtwo; println("{argone + {argtwo = {result"); Wywołanie z linii komend javafxc kalkulator.fx javafx kalkulator 5 7

Sekwencje def weekdays = ["Mon","Tue","Wed","Thu","Fri"]; lub jawnie def weekdays: String[] = ["Mon","Tue","Wed","Thu","Fri"];

Sekwencje: spłaszczanie def days = [weekdays, ["Sat","Sun"]]; kompilator spłaszczy zagnieżdżoną sekwencję def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];

Sekwencje: skrócona notacja def nums = [1..100];

Sekwencje: używanie predykatów def nums = [1,2,3,4,5]; def numsgreaterthantwo = nums[n n > 2]; // [3,4,5]

Sekwencje: dostęp do elementów def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]; println(days[0]); println(days[1]); println(days[2]); println(days[3]); println(days[4]); println(days[5]); println(days[6]);

Sekwencje: operator sizeof def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]; println(sizeof days); //7

Sekwencje: wstawianie elementów var days = ["Mon"]; insert "Tue" into days; //["Mon","Tue"]; insert "Fri" into days; insert "Sat" into days; insert "Sun" into days; //["Mon","Tue","Fri","Sat","Sun"]; insert "Thu" before days[2]; // ["Mon","Tue","Thu","Fri","Sat","Sun"]; insert "Wed" after days[1]; // ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];

Sekwencje: usuwanie elementów delete "Sun" from days; // ["Mon","Tue","Wed","Thu","Fri","Sat"]; delete days[0]; //["Tue","Wed","Thu","Fri","Sat"]; delete days; //usuwa wszystkie elementy, ale nie samą sekwencję

Sekwencje: odwracanie var nums = [1..5]; reverse nums; //returns [5, 4, 3, 2, 1]

Sekwencje: porównywanie def seq1 = [1,2,3,4,5]; def seq2 = [1,2,3,4,5]; println(seq1 == seq2); //true def seq1 = [1,2,3,4,5]; def seq2 = [1,2,3,4,5,6]; println(seq1 == seq2); //false def seq1 = [1,2,3,4,5]; def seq2 = [1,3,2,4,5]; println(seq1 == seq2); //false

Sekwencje: cięcie def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]; def weekend = days[5..6]; def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]; def weekdays = days[0..<5]; def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]; def weekend = days[5..]; def days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]; def days2 = days[0..<];

Operatory (1) przypisania = arytmetyczne proste: + - * / mod result = result mod 7; złożone: += -= *= /= unarne - ++ -- (zapis prefiksowy i postfiksowy) not var success = false; println(success); // false println(not success); // true równości i relacji ==!= > >= < <=

Operatory (2) warunkowe and or def username = "foo"; def password = "bar"; if ((username == "foo") and (password == "bar")) { println("test 1: username AND password are correct"); if ((username == "foo") or (password == "bar")) { println("test 3: username OR password is correct"); instanceof def str1="hello"; println(str1 instanceof String); //true def num = 1031; println(num instanceof Integer); //true

Wyrażenia wyrażenie blokowe wyrażenie warunkowe if operatory zakresu pętla for pętla while Wyrażenia try, catch, finally

Wyrażenia: blokowe var nums = [5, 7, 3, 9]; var total = { var sum = 0; for (a in nums) { sum += a ; sum; println("total is {total."); //Total is 24

Wyrażenia: warunkowe if def age = 8; var ticketprice; if (age < 5 ) { ticketprice = 0; else if (age < 12 or age > 65) { ticketprice = 5; else { ticketprice = 10; println("age: {age Ticket Price: {ticketprice dollars."); // Age: 8 Ticket Price: 5 dollars.

Wyrażenia: operatory zakresu var nums = [1..10 step 2]; println(nums); // [ 1, 3, 5, 7, 9 ] var nums = [10..1 step -1]; println(nums); // [ 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 ] var nums = [10..1 step 1]; println(nums); //warning

Wyrażenia: pętla for var days =["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]; for (day in days) { println(day);

Wyrażenia: pętla while var count = 0; while (count < 10) { println("count == {count"); count++;

Wyrażenia: try, catch, finally import java.lang.exception; try{ foo(); catch (e: Exception){ println("{e.getmessage() (but we caught it)"); finally{ println("we are now in the finally expression..."); println("the script is now executing as expected... "); function foo(){ var somethingweird = true; if(somethingweird){ throw new Exception("Something weird just happened!"); else{ println("we made it through the function."); //Something weird just happened! (but we caught it) //We are now in the finally expression... //The script is now executing as expected...

Klasy i obiekty Ogólny schemat klasy class nazwa_klasy{ [zmienne, stałe] [metody]

Klasy i obiekty: przykład (1) definicja klasy class Customer { var firstname: String; var lastname: String; var phonenum: Integer; function printname() { println("name: {firstname {lastname"); function printphonenum(){ println("phone: {phonenum");

Klasy i obiekty: przykład (2) inicjacja obiektu i wywołanie metod def customer = Customer { firstname: "John"; lastname: "Doe"; phonenum: "(408) 555-1212" customer.printname(); customer.printphonenum();

Klasy i obiekty: dziedziczenie (1) abstract class Account { var balance: Number; function withdraw(amount: Number): Void { balance -= amount; class SavingsAccount extends Account { var penalty = 5.00; function checkminbalance() : Void { balance -= penalty; class CheckingAccount extends Account { override function withdraw(amount: Number) : Void { balance -= amount;

Klasy i obiekty: dziedziczenie (2) dziedziczenie wielokrotne mixin class MyNameMixin { var firstname = "John"; var lastname = "Doe"; function printname(){ println("my name is: {firstname {lastname"); mixin class MyAddressMixin { var address = "1 Main Street, Anytown USA"; function printaddress(){ println("my address is: {address"); class MyContact extends MyNameMixin, MyAddressMixin { def mycontact = MyContact{; mycontact.printname(); mycontact.printaddress();

Tworzenie aplikacji graficznych (1) Puste okno import javafx.stage.stage; //required to render a window import javafx.scene.scene; //required to display a circle in a window Stage { title: JavaFX Is Easy!" scene: Scene { width: 300 height: 250 content: [ ]

Tworzenie aplikacji graficznych (2) Efekt

Tworzenie aplikacji graficznych (3) Okno z kołem w środku import javafx.stage.stage; import javafx.scene.scene; import javafx.scene.shape.circle; import javafx.scene.paint.color; Stage { title: "JavaFX Is Easy!" scene: Scene { width: 300 height: 250 content: [ Circle { ] centerx: 150, centery: 120, radius: 80, fill: Color.MAROON, stroke: Color.INDIANRED, strokewidth: 10.0

Tworzenie aplikacji graficznych (4) Efekt

Tworzenie aplikacji graficznych (5) Efekt

Tworzenie aplikacji graficznych (6) Efekt

Tworzenie aplikacji graficznych (7) Efekt

Tworzenie aplikacji graficznych (8) Efekt

Linki http://www.javafx.com http://www.javafx.com/samples http://www.javafx.com/docs/gettingstarted/eclipse-p