JavaFX Pär Sikö, Epsilon 2008-02-27. Agenda Vad är JavaFX JavaFX exempel Swing och JavaFX Språket Egna komponenter Bindning Operationer och funktioner.

Slides:



Advertisements
Liknande presentationer
Händelsehantering i grafiska gränssnitt byggda med Tkinter
Advertisements

Föreläsning 9 Programmeringsteknik och Matlab 2D1312/2D1305
Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
Avlusning Debugger (”avlusare”) Breakpoints Watch.
1 2I1049 Föreläsning 8 KTH-MI Peter Mozelius Grafiska gränssnitt, Java interface och händelsehantering.
Repetition av språket Java
F2 - Intro till Java1 Föreläsning 2 - Intro till Java  Sammanfattning av Lektion 1 (kap 2): • Vad behövs för att kunna programmera? • DrJava • Java •
Villkor Booelska operatorer Villkorsatser Switchsatser Villkor och annat.
II130V Konstruktion av webbsidor Välkommen till föreläsning 3 September 2007.
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Fortsättningskurs i Programmering lektion 6
Föreläsning 3 Repetition Operatorer Styrstrukturer Deklaration och anrop av metoder.
Metoder i java Det finns två typer av metoder i java
Om Java C =>Java syntax variabler metoder färdiga klasser
Övning5 Så här ska man tänka när man löser uppgift 1 på tentan lite grafik, så här söker man genom en lista så här läser man från en fil i java lösa uppgift.
Programmeringsteknik för K och Media
Att programmera i språket Java
1 ITK:P1 Föreläsning 4 Grafiska gränssnitt och händelsehantering DSV Peter Mozelius.
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 8 Appletprogram/fristående grafiska program Rita linjer, rektanglar mm Skriva text Byta färg Appletprogram html.
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
Next previous Innehåll Inledning Några enkla exempel Pekare till och kort beskrivning av större exempel Speciella referenser (som används i marginalen)
1 ITK:P1 Föreläsning 6 Layoutmodeller i Java DSV Marie Olsson.
Next previous Introduktion till Java Av Björn Eiderbäck Adress: Rum 1641, 6tr NADA Osquars Backe 2 Tel: OOMPAE 2000.
1 Föreläsning 8 Grafik AWT. 2 Grafik Frame använder man för att skapa ett fönster Button använder man om man vill ha en knapp att trycka på Canvas är.
i olika programmeringsspråk
Föreläsning 4, Kapitel 4 Gruppera objekt Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Föreläsning 11 Arrayer.
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Vektorer (klassen Vector) Sortering
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: Trådprogrammering i Java - Avbrott (”interrupts”) - Metoden join() -
Föreläsning 15 (16) Introduktion till Swing. Historik (java.awt) JDK 1.0 – AWT (Abstract Window Toolkit) Paket för gränssnittsprogrammering Har en del.
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Objektorienterad Modellering Programmering och Analys
1. En infrastruktur för programutveckling
1 Föreläsning 7 Repetition Instansvariabler och klassvariabler Klassmetoder och Instansmetoder.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
1 Föreläsning 5 Programmeringsteknik och Matlab 2D1312/2D1305 Repetition Metoder Array API och klassen ArrayList.
1 ITK:P1 Föreläsning 8 Multimedia för spelkonstruktion DSV Peter Mozelius.
Föreläsning 10 Stränghantering.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
Föreläsning 4 Klasser Och Objekt.
1. Ett problem/uppgift.
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
UTVECKLING MED RAMVERKET.NET Marcus Medina. Dagens visdomsord ”Google is your friend”
Föreläsning 1 Om kursen Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
0. Kod, Klassdiagram och Sekvensdiagram import java.awt.event.*; import javax.swing.*; import java.awt.*; public class TwoThreads implements ActionListener.
Föreläsning 13 Appletprogram/fristående grafiska program Arv Rita linjer, rektanglar mm Skriva text, byta färg Appletprogram & HTML Grafiska användargränssnitt.
1 Föreläsning 11 Grafisk användargränssnitt med Tkinter.
Föreläsning 9 Arv kap 8.1 Interface kap 9.2 Grafiska användargränssnitt (GUI) kap 10.
2I1073 Lektion 1 KTH-MI Peter Mozelius XHTML, stilmallar och Javascript.
OOP F13:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 13 Repetition variabler, selektion och iteration.
Föreläsning 17 Repetition. Källkodsformat Unicode används åäöμψζ tillåtna i namn på identifierare Inte alla miljöer klarar av det Källkod Bytekod Java.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
Programmeringsteknik för K och Media
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
OOP&M - teori1 OOP – Föreläsning 7 (Sista oop I) Konstruktioner för att hantera upprepningar Kapitel 11.
OOP&M - teori1 OOP&M del III– Föreläsning 3 vecka 6 Kontrollkomponenter (Components) Som Applets.
OOP&M - teori1 OOP del III– Vecka 10 Händelser Kontrollkomponenter (Components) Featuring: Applets.
Föreläsning 15: Exceptions & lite swing, gränssnitt
Föreläsning 13: Swing (GUI), händelser, timer
Presentationens avskrift:

JavaFX Pär Sikö, Epsilon

Agenda Vad är JavaFX JavaFX exempel Swing och JavaFX Språket Egna komponenter Bindning Operationer och funktioner Händelsehantering Trådning Animering Mer om språket Demo Framtiden Länkar Frågor

Agenda Vad är JavaFX JavaFX exempel Swing och JavaFX Språket Egna komponenter Bindning Operationer och funktioner Händelsehantering Trådning Animering Mer om språket Demo Framtiden Länkar Frågor

Vad är JavaFX? JavaFX (grafik, effekter, animering) JSR 223 Swing, Graphics2D, JComponent Java Socket, RMI, Web Services

Vad är JavaFX? F3, Chris Oliver JavaFX är en produktserie JavaFX Script JavaFX Mobile JavaFX TV Flash, Silverlight NetBeans, Eclipse

JavaFX Script Java/Java2D/Swing Ta bort 90% av alla semikolon Skapa objekt: Frame{ title: ”Demo”} istället för JFrame frame = new JFrame( ”Demo” ); Använd height: 400 istället för setHeight(400); Använder Event Dispatcher Thread

Agenda Vad är JavaFX JavaFX exempel Swing och JavaFX Språket Egna komponenter Bindning Operationer och funktioner Händelsehantering Trådning Animering Mer om språket Demo Framtiden Länkar Frågor

JavaFX exempel package se.javaforum.demo1; import javafx.ui.*; Frame { content: Label { text: “Hello World” } width: 300 height: 200 visible: true };

package se.javaforum.demo1; import javafx.ui.*; Frame { content: Label { text: “Hello World” } background: black width: 300 height: 200 visible: true }; JavaFX exempel

Agenda Vad är JavaFX JavaFX exempel Swing och JavaFX Språket Egna komponenter Bindning Operationer och funktioner Händelsehantering Trådning Animering Mer om språket Demo Framtiden Länkar Frågor

Snabbkurs i Swing

Komponenter JavaFX Button Label ListBox SplitPane RadioButton Tree Table TextArea Java JButton JLabel, JEditorPane JList JSplitPane JRadioButton JTree JTable JTextArea

LayoutManager JavaFX GridPanel FlowPanel BorderPanel Box GroupPanel Java GridLayout FlowLayout BorderLayout BoxLayout GroupLayout

Layout exempel Frame { content: GridPanel { rows: 1 columns: 2 cells: [ Button{ text: “Next image” }, TextArea{ text: “Description” } ] } width: 300 height: 200 visible: true };

Agenda Vad är JavaFX JavaFX exempel Swing och JavaFX Språket Egna komponenter Bindning Operationer och funktioner Händelsehantering Trådning Animering Mer om språket Demo Framtiden Länkar Frågor

Variabler var myVariable: Integer(?|*|+) = value; Fyra primitiva typer Integer Number String Boolean Exempel: var myInt: Integer = 1; var myInt = 1; var myIntArray: Integer* = [1, 2, 3]; var myIntArray = [1, 2, 3];

Variabler var buttonText: String = “Next Image“; Frame { content: GridPanel { rows: 1 columns: 2 cells: [ Button{ text: “Text: {buttonText}“}, TextArea{ text: “Textfält” } ] } width: 300 height: 100 visible: true }; Använd { } för att infoga variabler och uttryck i text

Klasser och objekt Skapa en klass i JavaFX består av: Definiera klassen Implementera operationer och funktioner Initiera attribut

Klasser och objekt class MyClass { // extends Class1, Class2 etc. attribute xPos: Integer; operation calculateYPos(x: Integer) : Integer; } attribute MyClass.xPos = 10; operation MyClass.calculateYPos(x: Integer) { return x*5; } MyClass { xPos: 5 }

If, while, for if och while syntaxen är som Javas. for använder samma syntax som sökning i arrayer. for( i in [0..10] ) { System.out.println( ”i = { i } ” ); } for( i in [0..10] where i % 2 == 0 ) { System.out.println( ”i = { i } ” ); } for( i in [0..10], j in [0..10] ) { System.out.println( i * j ); }

try, catch och throw try - påminner om Javas try-satser men det går att kasta alla sorters objekt inte bara Throwable. throw – kan kasta vilket objekt som helst. try { throw ”Hello World”; } catch( s: String ) { System.out.println( ”Fångade en sträng: {s}” ); } catch( any ) { System.out.println( ”Fångade något annat: {any}” ); }

return, break och continue return fungerar precis som i Java. break och continue är som i Java men utan labels

do do – fungerar inte alls som i Java.

Agenda Vad är JavaFX JavaFX exempel Swing och JavaFX Språket Egna komponenter Bindning Operationer och funktioner Händelsehantering Trådning Animering Mer om språket Demo Framtiden Länkar Frågor

Egna komponenter Ärv från CompositeNode för att implementera en egen grafisk komponent Implementera operationen composeNode() Egna komponenter ritas på en Canvas Gruppera objekt med Group

class ImageFrame extends CompositeNode { attribute frameColor: Color; attribute imageUrl: String; } operation ImageFrame.composeNode() { return Group { content: [ Rect {width: 300 height: 200 fill: frameColor }, ImageView { image: Image { url: imageUrl } } ] }; } Frame { content: Canvas { content: ImageFrame{ frameColor: white imageUrl: ”file:///c:/...” } }

Komponenter Egna komponenter bygger på: RectCircleEllipseLinePolylinePolygon Button, Label, Image, TextField, TextArea.... ArcCubicCurveQuadCurvePathTextSwing

Agenda Vad är JavaFX JavaFX exempel Swing och JavaFX Språket Egna komponenter Bindning Operationer och funktioner Händelsehantering Trådning Animering Mer om språket Demo Framtiden Länkar Frågor

var x = 5; var y = bind 5*x// y == 25 x = 7;// x == 7 och y == 35 Ändra x Ändra y Bindning

var labelText: String = ""; Frame { content: GridPanel { rows: 1 columns: 2 cells: [ Label{ text: bind labelText }, TextArea{ text: bind labelText } ] } width: 300 height: 100 visible: true };

Bindning var url = ”file:///c:/ jpg”; var description = ”Help the Beerless”; Frame { content: Canvas { content: [ ImageFrame { frameColor: white imageUrl: bind url }, View { content: TextArea { text: bind description } } ] }

Agenda Vad är JavaFX JavaFX exempel Swing och JavaFX Språket Egna komponenter Bindning Operationer och funktioner Händelsehantering Trådning Animering Mer om språket Demo Framtiden Länkar Frågor

operation och function operation motsvarar javas metoder function påminner om operation med undantagen: –Får bara innehålla deklarationer och en return-sats –Returvärded förändras kontinuerligt function påminner om en matematisk funktion function sum(m, n) { if( m > n ) {.... } var r = m + n; return r; }

operation och function function sqr( x: Integer) : Integer { return x*x; } var a = 10; var b = sqr( a ); b == 100;// Sant a = 2; b == 4;// Sant eller falskt?

operation och function function sqr( x: Integer) : Integer { return x*x; } var a = 10; var b = sqr( a ); b == 100;// Sant a = 2; b == 4;// Falskt, vi måste binda // variabeln till funktionen

operation och function function sqr( x: Integer) : Integer { return x*x; } var a = 10; var b = bind sqr( a ); b == 100;// Sant a = 2; b == 4;// Sant

Variabler - överkurs En variabel eller attribut kan tilldelas en funktion eller en operation. var f = function( a: Integer ) { return a*a; }; f(5) == 25;// Sant f(9) == 81;// Sant

Agenda Vad är JavaFX JavaFX exempel Swing och JavaFX Språket Egna komponenter Bindning Operationer och funktioner Händelsehantering Trådning Animering Mer om språket Demo Framtiden Länkar Frågor

Händelsehantering Klassen Button har ett attribut, ”action”, som ska tilldelas en operation eller en funktion Button { text: ”Next image” action: operation() { url = ”file:///c:/images.....”; description = ”New text”; }

Händelsehantering var clickCount = 0; Frame { content: Button { text: bind “Jag har tryckts {clickCount} gånger“ action: operation( ) { clickCount++; } width: 300 height: 100 visible: true };

Agenda Vad är JavaFX JavaFX exempel Swing och JavaFX Språket Egna komponenter Bindning Operationer och funktioner Händelsehantering Trådning Animering Mer om språket Demo Framtiden Länkar Frågor

Trådning Event Dispatcher Thread (EDT) Använd do för att exekvera kod utanför EDTn. Använd do later för asynkron exekvering av kod på EDTn.

Trådning operation loadImage( url: String) { var image: Image; do{ image: imageLoader.loadImage(url); } return image; }

Agenda Vad är JavaFX JavaFX exempel Swing och JavaFX Språket Egna komponenter Bindning Operationer och funktioner Händelsehantering Trådning Animering Mer om språket Demo Framtiden Länkar Frågor

Animering Animering i JavaFX består av följande: Grafik och Swingkomponenter Tid Bindning Förändring

Animering – grafik och Swingkomponenter Använd Canvas för att rita grafik. Canvas består av en scengraf. Gruppera objekt med hjälp av ’Group’. En Canvas kan innehålla, förutom grafik, en/flera canvas samt Swingkomponenter.

Animering – scengraf Canvas Group ButtonLabelImageRectangle Group Button

Animering – scenegraf Canvas Group ButtonLabelImageRectangle Group Button transform: Rotate { angle: 45 }

Animering – scenegraf Canvas Group ButtonLabelImageRectangle Group Button transform: Rotate { angle: 45 }

Animering – scenegraf Frame { content: Canvas { content: Group { transform: scale(2,1) content: [ Rect { width: 100 height: 100 stroke: blue strokeWidth:3 fill: khaki }, View { transform: translate(20,40) content: Button { text:"Swing“} } ] }

Animering - transformationer Scale Translate Skew Rotate

Animering - transparens Grafiska objekt innehåller ett attribut opacity som bestämmer objektets transparens. 0 fullständigt genomskinligt, 1 ogenskinligt.

Animering - tid xPos = [a.. b] dur c [linear | easein | easeout | easeboth] a – startvärde b – slutvärde c – varaktighet Exempel: xPos = [ ] dur 1000 xPos = [0, ] dur 1000

Animering - tid var buttonWidth: Integer = 200; Frame { content: Button { text: "Press me" action: operation( ) { buttonWidth = [ ] dur 1000; } width: bind buttonWidth preferredSize: Dimension {width: 200 height: 75} } width: 500 height: 100 visible: true };

Agenda Vad är JavaFX JavaFX exempel Swing och JavaFX Språket Egna komponenter Bindning Operationer och funktioner Händelsehantering Trådning Animering Mer om språket Demo Framtiden Länkar Frågor

Mer om arrayer Exempel på arrayer: var ints: Integer* = [1,2,3,4]; var ints2 = [ints,5,6,7]; => 1,2,3,4,5,6,7 var ints3 = [ ]; => 1,2,3,4,5,6,7 Var ints4 = [ 1,3.. 7 ]; => 1,3,5,7 Söka i arrayer: var selection = ints3[n| n>3] => 4,5,6,7 var selection1 = ints3[n| indexof n > 3 ] => 5,6,7

Mer om arrayer - modifiera Exempel var ints = [1,2,3,4,5]; insert 6 into ints;=>1,2,3,4,5,6 insert 0 as first into ints;=>0,1,2,3,4,5,6 insert 0 before ints[n| n==4]; =>0,1,2,3,0,4,5,6 delete ints[n| n >= 3];=>0,1,2,0

Mer om arrayer – ställa frågor Utan filter select n*n from n in [ ]; => 1,4,9,16,25 etc. Med filter select n*n from n in [ ] where n%2 == 0;=> 4,16,36 etc.

Triggers Triggers exekveras vid speciella händelser. Det finns 4 olika triggers: Create, Insert, Delete, Replace

Creation trigger class X { atribute numbers: Number*; } trigger on new X { insert [3,4] into this.nums; } var x = new X(); x.Nums == [3,4];// Sant

Insert trigger class X { attribute numbers: Number*; } trigger on insert num into X.numbers { System.out.println(”La till: {num}”); } var x = new X(); insert 10 into x.numbers; => skriver ut ”La till 10”

Agenda Vad är JavaFX JavaFX exempel Swing och JavaFX Språket Egna komponenter Bindning Operationer och funktioner Händelsehantering Trådning Animering Mer om språket Demo Framtiden Länkar Frågor

Demo Demonstration av ImageViewer

Agenda Vad är JavaFX JavaFX exempel Swing och JavaFX Språket Egna komponenter Bindning Operationer och funktioner Händelsehantering Trådning Animering Mer om språket Demo Framtiden Länkar Frågor

Framtiden Viktiga faktorer: –Java 6 update N –Utvecklare –Stabiliserat språk Språket ändras fortfarande. Saknas verktyg. Är JavaFX en Flash killer? ;-)

Agenda Vad är JavaFX JavaFX exempel Swing och JavaFX Språket Egna komponenter Bindning Operationer och funktioner Händelsehantering Trådning Animering Mer om språket Demo Framtiden Länkar Frågor

Länkar

Agenda Vad är JavaFX JavaFX exempel Swing och JavaFX Språket Egna komponenter Bindning Operationer och funktioner Händelsehantering Trådning Animering Mer om språket Demo Framtiden Länkar Frågor