26
Copyright © 2013 Russel Winder 1 GroovyFX or How to Program JavaFX Easily Prof Russel Winder http://www.russel.org.uk email: [email protected] xmpp: [email protected] twitter: @russel_winder

or How to Program JavaFX Easily - bcs.org · Copyright © 2013 Russel Winder 16 import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import

Embed Size (px)

Citation preview

Copyright © 2013 Russel Winder 1

GroovyFXor

How to Program JavaFX Easily

Prof Russel Winder

http://www.russel.org.uk

email: [email protected]: [email protected]

twitter: @russel_winder

Copyright © 2013 Russel Winder 2

Interstitial Advertisement

?

Copyright © 2013 Russel Winder 3

Java

AWT

Applets

Copyright © 2013 Russel Winder 4

Copyright © 2013 Russel Winder 5

Interregnum

Java server-side only

Copyright © 2013 Russel Winder 6

Flex

Silverlight

Copyright © 2013 Russel Winder 7

Copyright © 2013 Russel Winder 8

JavaFX

Copyright © 2013 Russel Winder 9

JavaFX Script

http://en.wikipedia.org/wiki/JavaFX_Script

import javafx.stage.Stage;import javafx.scene.Scene;import javafx.scene.text.Font;import javafx.scene.text.Text;

Stage { title: "Hello World" width: 250 height: 80 scene: Scene { content: Text { font: Font { size: 24 } x: 10, y: 30 content: "Hello World." } }}

Copyright © 2013 Russel Winder 10

Historical Context

● JavaFX● RIA framework

– JavaME– JavaSE

● JavaFX Script

● Compete against:● Flex● Silverlight

Copyright © 2013 Russel Winder 11

JavaFX didn't really catch on…

Copyright © 2013 Russel Winder 12

…despite JavaFX Script.

Copyright © 2013 Russel Winder 13

Copyright © 2013 Russel Winder 14

Graphics Frameworks

● GTK, GObject:● Glade

● wxWidgets:● wxGlade

● Qt:● Qt Designer● Qt Quick/QML

Copyright © 2013 Russel Winder 15

The New JavaFX

● JavaFX 2:● Java API for Java SE.● Eventually a replacement for Swing.

● SceneBuilder● FXML

JavaFX == JavaFX 2

Copyright © 2013 Russel Winder 16

import javafx.application.Application;import javafx.scene.Group;import javafx.scene.Scene;import javafx.stage.Stage;Import javafx.scene.paint.Color;import javafx.scene.text.Font;import javafx.scene.text.Text;

public class HelloWorld extends Application { @Override public void start(final Stage stage) { stage.setTitle("Hello World"); final Group rootNode = new Group(); final Text textNode = new Text(10, 30, "Hello World."); textNode.setFont(Font.font("Ocean Sans MT", 24)); rootNode.getChildren().add(textNode); final Scene sceneNode = new Scene(rootNode, 250, 80); sceneNode.setFill(Color.web(“#d0c4b0”)); stage.setScene(sceneNode); stage.show(); }

public static void main(final String[] args) { launch(args); }}

Copyright © 2013 Russel Winder 17

No JavaFX Script

Copyright © 2013 Russel Winder 18

Groovy

Copyright © 2013 Russel Winder 19

Jim ClarkDean IversonDierk KönigAndres AlmirayRussel Winder

Copyright © 2013 Russel Winder 20

GroovyFX

import static groovyfx.javafx.GroovyFX.start

import javafx.scene.paint.Color

start { stage title: 'Hello World', visible: true, { scene width: 250, height: 80, fill: Color.web('#d0c4b0'), { text x: 10, y: 30, text: 'Hello World.', font: '24pt "Ocean Sans MT"' } }}

Copyright © 2013 Russel Winder 21

RealCode

http://nighthacking.com

Copyright © 2013 Russel Winder 22

Having Good Architectures

● Separate concerns.● MVC (model, view

controller), MVP (model view presenter).

● Mediator.● Façade.

● Code for structure and logic.

● CSS (cascading style sheets) for presentation.

Copyright © 2013 Russel Winder 23

More code…

Copyright © 2013 Russel Winder 24

http://griffon.codehaus.org/

Copyright © 2013 Russel Winder 25

Interstitial Advertisement

?

Copyright © 2013 Russel Winder 26

GroovyFXor

How to Program JavaFX Easily

Prof Russel Winder

http://www.russel.org.uk

email: [email protected]: [email protected]

twitter: @russel_winder