SlideShare a Scribd company logo
Programming with JavaFX
Tecniche di Programmazione – A.A. 2014/2015
Summary
A.A. 2014/2015Tecniche di programmazione2
1. About and History
2. Basic concepts
3. Minimal JavaFX Application
4. Application structure
5. The Scene Graph
6. Events
7. Model-View-Controller
8. The Controller in FXML
9. Properties and bindings
10. Resources
About and History
Introduction to JavaFX
GUI in Java
A.A. 2014/2015Tecniche di programmazione4
 Graphic framework available in Java
 Swing
 Extremely powerful, many extensions available
 Complex to master, requires low-level handling
 Hard to create visually pleasing applications
 Alternatives available
 Most notable: SWT (Eclipse)
 Still cumbersome to master
 On a different Universe, web-based user interfaces
became nicer and faster to create
JavaFX 1.0 – forget it
A.A. 2014/2015Tecniche di programmazione5
 JavaFX 1 and JavaFX 2 are completely different
 Version 1 relied on a “scripting language” to describe
scenes, with ‘hooks’ to activate Java code
 JavaFX 1.x is now deprecated
JavaFX 2.x
A.A. 2014/2015Tecniche di programmazione6
 Redesigned from scratch
 The JavaFX 2.x framework is entirely written in Java
 For visual layout, an XML file may also be used (called
FXML)
 Graphic appearance borrows from web-standard CSS
style sheets
 UI programming is based on easy to handle events and
bindings
 Oracle plans to deprecate Swing in favor of JavaFX 2
 Now called JavaFX 8 (after Java 8 – JDK 1.8)
Getting and running JavaFX
A.A. 2014/2015Tecniche di programmazione7
 JavaFX is already included in Oracle JDK 7 and JDK8
 Not in JDK 6.x
 Not in OpenJDK (beware, Linux users!)
 JDK 8 includes significant JavaFX improvements.
 Recommended:
 JavaFX Scene Builder
 Eclipse: e(fx)clipse plugin, available in the Eclipse Marketplace
 Download links are in the course webpage
Basic concepts
Introduction to JavaFX
Key concepts in JavaFX
A.A. 2014/2015Tecniche di programmazione9
 Stage: where the application will be displayed (e.g., a
Windows’ window)
 Scene: one container of Nodes that compose one “page”
of your application
 Node: an element in the Scene, with a visual appearance
and an interactive behavior. Nodes may be hierarchically
nested
My best friend is the JavaFX JavaDoc API
http://docs.oracle.com/javase/8/javafx/api/
Some ‘Leaf’ Nodes (Controls)
A.A. 2014/2015Tecniche di programmazione10
Some ‘Parent’ Nodes (Container ‘Panes’)
A.A. 2014/2015Tecniche di programmazione11
 BorderPane (5-areas)
 Hbox,Vbox (linear sequence)
 StackPane (overlay all children)
 GridPane (row x columns)
 FlowPane (flowing boxes, wrap around)
 TilePane (flowpane with equally sized boxes)
 AnchorPane (magnetically attach nodes at corners or
sides)
Some Nodes (Charts)
A.A. 2014/2015Tecniche di programmazione12
Nodes family
A.A. 2014/2015Tecniche di programmazione13
javafx.scene.Node
Parent
Control
ChoiceBox
ComboBoxBase
ColorPicker
ComboBox
Labeled
ButtonBase
Button
CheckBox
MenuButton
ToggleButton
Cell
Label
TitledPane
ListView
MenuBar
Separator
Slider
TabPane
TextInputControl
TextArea
TextField
ToolBar
TreeView
Group
Region
Axis
Chart
Pane
AnchorPane
BorderPane
FlowPane
GridPane
HBox
StackPane
TilePane
VBox
WebView
Shape
Arc
Circle
Line
Polygon
Polyline
Rectangle
Text
Canvas
Imageview
Focus on
Panes
and
Controls
And more coming…
A.A. 2014/2015Tecniche di programmazione14
http://jfxtras.org/
And more coming…
A.A. 2014/2015Tecniche di programmazione15
http://fxexperience.com/controlsfx/
Empty JavaFX window
A.A. 2014/2015Tecniche di programmazione16
public class Main extends Application {
@Override
public void start(Stage stage) {
Group root = new Group(); // the root is Group or Pane
Scene scene = new Scene(root, 500, 500, Color.BLACK);
stage.setTitle("JavaFX Demo");
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Adding some shape
A.A. 2014/2015Tecniche di programmazione17
public class Main extends Application {
@Override
public void start(Stage stage) {
Group root = new Group();
Scene scene = new Scene(root, 500, 500, Color.BLACK);
stage.setTitle("JavaFX Demo");
Rectangle rect = new Rectangle(25,25,250,250);
r.setFill(Color.BLUE);
root.getChildren().add(rect);
stage.setScene(scene);
stage.show();
}
}
How to add scene content
A.A. 2014/2015Tecniche di programmazione18
 In Java code
 By creating and adding new Node subclasses
 Standard way, in Java (boring and error-prone)
 By using node Builder classes
 Programming pattern, later on…
 In FXML
 By writing XML directly
 By using the Scene Editor
 And loading the FXML into the application
JavaFX Scene Builder 2.0
A.A. 2014/2015Tecniche di programmazione19
FXML fragment
A.A. 2014/2015Tecniche di programmazione20
. . .
<HBox id="HBox" alignment="CENTER" spacing="15.0"
AnchorPane.rightAnchor="23.0" AnchorPane.topAnchor="22.0">
<children>
<Button id="button1" fx:id="newIssue" onAction="#newIssueFired"
text="New" />
<Button id="button2" fx:id="saveIssue" onAction="#saveIssueFired"
text="Save" />
<Button id="button3" fx:id="deleteIssue" onAction="#deleteIssueFired"
text="Delete" />
</children>
</HBox>
<ImageView id="IssueTrackingLite" layoutX="14.0" layoutY="20.0">
<image>
<Image url="@IssueTrackingLite.png" preserveRatio="true" smooth="true" />
</image>
</ImageView>
. . .
Building a scene from FXML
A.A. 2014/2015Tecniche di programmazione21
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(
getClass().getResource("circle.fxml"));
stage.setTitle("Circle Demo");
stage.setScene(new Scene(root, 500, 150));
stage.show();
}
Application structure
Introduction to JavaFX
Separation of concerns
A.A. 2014/2015Tecniche di programmazione23
Typical Class Diagram
A.A. 2014/2015Tecniche di programmazione25
General rules
A.A. 2014/2015Tecniche di programmazione26
 A JavaFX application extends
javafx.application.Application
 The main() method should call Application.launch()
 The start() method is the main entry point for all JavaFX
applications
 Called with a Stage connected to the Operating System’s
window
 The content of the scene is represented as a hierarchical
scene graph of nodes
 Stage is the top-level JavaFX container
 Scene is the container for all content
Minimal example
A.A. 2014/2015Tecniche di programmazione27
public class HelloWorld extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Hello World!");
StackPane root = new StackPane();
Button btn = new Button();
btn.setText("Say 'Hello World'");
root.getChildren().add(btn);
primaryStage.setScene(new Scene(root, 300, 250));
primaryStage.show();
}
}
Stage vs. Scene
javafx.stage.Stage javafx.scene.Scene
A.A. 2014/2015Tecniche di programmazione28
 The JavaFX Stage class is the
top level JavaFX container.
 The primary Stage is
constructed by the platform.
 Additional Stage objects may
be constructed by the
application.
 A stage can optionally have
an owner Window.
 The container for all content
in a scene graph
 The application must specify
the root Node for the scene
graph
 Root may be Group (clips),
Region, Control (resizes)
 If no initial size is specified, it
will automatically compute it
Nodes
A.A. 2014/2015Tecniche di programmazione29
 The Scene is populated with a tree of Nodes
 Layout components
 UI Controls
 Charts
 Shapes
 Nodes have Properties
 Visual (size, position, z-order, color, ...)
 Contents (text, value, data sets, ...)
 Programming (event handlers, controller)
 Nodes generate Events
 UI events
 Nodes can be styled with CSS
Events
A.A. 2014/2015Tecniche di programmazione30
 FX Event (javafx.event.Event):
 Event Source => a Node
 Event Target
 Event Type
 Usually generated after some user action
 ActionEvent,TreeModificationEvent, InputEvent, ListView.E
ditEvent, MediaErrorEvent,TableColumn.CellEditEvent,Tre
eItem.TreeModificationEvent,TreeView.EditEvent,WebEve
nt,WindowEvent,WorkerStateEvent
 You can define event handlers in your application
Properties
A.A. 2014/2015Tecniche di programmazione31
 Extension of the Java Beans convention
 May be used also outside JavaFX
 Encapsulate properties of an object
 Different types (string, number, object, collection, ...)
 Set/Get
 Observe changes
 Supports lazy evaluation
 Each Node has a
large set of Properties
Bindings
A.A. 2014/2015Tecniche di programmazione32
 Automatically connect («bind») one Property to another
Property
 Whenever the source property changes, the bound one is
automatically updated
 Multiple bindings are supported
 Lazy evaluation is supported
 Bindings may also involve computations (arithmetic operators,
if-then-else, string concatenation, ...) that are automatically
evaluated
 May be used to automate UI
 May be used to connect the Model with theView
The Scene graph
Introduction to JavaFX
Nodes
A.A. 2014/2015Tecniche di programmazione34
 Root node: top level container
 Intermediate nodes:
 Containers
 Layout managers
 UI Composite controls
 Leaf (terminal) nodes:
 Shapes
 UI Controls
 Organized as a Hierarchical tree
Nodes family
A.A. 2014/2015Tecniche di programmazione35
javafx.scene.Node
Parent
Control
ChoiceBox
ComboBoxBase
ColorPicker
ComboBox
Labeled
ButtonBase
Button
CheckBox
MenuButton
ToggleButton
Cell
Label
TitledPane
ListView
MenuBar
Slider
TabPane
TextInputControl
TextArea
TextField
ToolBar
TreeView
Group
Region
Axis
Chart
Pane
AnchorPane
BorderPane
FlowPane
GridPane
HBox
StackPane
TilePane
VBox
WebView
Shape
Arc
Circle
Line
Polygon
Rectangle
Text
Canvas
Imageview
JavaDoc
is your
friend
Focus on
Panes
and
Controls
Exploring Controls and Examples
A.A. 2014/2015Tecniche di programmazione36
 JavaFX Ensemble demo
application
 Download from Oracle
site: JavaFX Demos and
Samples Downloads
 Run Ensemble.jnlp
UI Form Controls
A.A. 2014/2015Tecniche di programmazione37
 Controls may be
combined to construct
«Forms»
 Control Nodes have a
value property
 May be linked to application
code
 Control Nodes generate
UI Events
 Button:ActionEvent
 Text: ActionEvent,
KeyTyped, KeyPressed,
MouseClicked, ...
A.A. 2014/2015Tecniche di programmazione38
Layout Class Hierarchy
A.A. 2014/2015Tecniche di programmazione39
 Group:
 Doesn’t perform any positioning of children.
 To statically assemble a collection of nodes in fixed positions
 To apply an effect or transform to that collection.
 Region:
 base class for all general purpose layout panes
 resizable and stylable via CSS
 Supports dynamic layout by sizing and positioning children
 Control:
 the base class for all skinnable controls
 resizable and subclasses are all stylable via CSS
 Controls delegate layout to their skins (which are Regions)
 Each layout Control subclass provides API for adding content in the
appropriate place within its skin
 you do not add children to a control directly.
A.A. 2014/2015Tecniche di programmazione40
A.A. 2014/2015Tecniche di programmazione41
A.A. 2014/2015Tecniche di programmazione42
A.A. 2014/2015Tecniche di programmazione43
A.A. 2014/2015Tecniche di programmazione44
A.A. 2014/2015Tecniche di programmazione45
A.A. 2014/2015Tecniche di programmazione46
A.A. 2014/2015Tecniche di programmazione47
Creating the Scene Graph
A.A. 2014/2015Tecniche di programmazione48
 The Java way
 Create Control Nodes
 Set properties to new nodes
 Add new nodes to parent node
 With Constructors and/or with Builders
 The FXML way
 Create a FXML file
 Define Nodes and Properties in FXML
 Load the FXML
 (Optionally, add new nodes/properties the Java way)
Example: one text input field
A.A. 2014/2015Tecniche di programmazione49
TextField text = new TextField("Text");
text.setMaxSize(140, 20);
root.getChildren().add(text);
TextField text = TextFieldBuilder().create()
.maxHeight(20).maxWidth(140)
.text("Text")
.build() ;
root.getChildren().add(text);
Constructors
Builders
A.A. 2014/2015Tecniche di programmazione50
public class HelloDevoxx extends Application {
public static void main(String[] args)
{
launch(args);
}
@Override
public void start(Stage primaryStage)
{
primaryStage.setTitle("Hello Devoxx");
Group root = new Group();
Scene scene = new Scene(root, 400, 250,
Color.ALICEBLUE);
Text text = new Text();
text.setX(105);
text.setY(120);
text.setFont(new Font(30));
text.setText("Hello Devoxx");
root.getChildren().add(text);
primaryStage.setScene(scene);
primaryStage.show();
}
}
A.A. 2014/2015Tecniche di programmazione51
public void start(Stage primaryStage)
{
primaryStage.setTitle("Hello Devoxx");
primaryStage.setScene(SceneBuilder.create()
.width(400).height(250).fill(Color.ALICEBLUE)
.root(GroupBuilder.create().children(
TextBuilder.create()
.x(105).y(120)
.text("Hello Devoxx")
.font(new Font(30)).build()
).build()
).build());
primaryStage.show();
}
The FXML way...
A.A. 2014/2015Tecniche di programmazione52
 XML-based format
 Nested tree of XML Elements, corresponding to Nodes
 XML Attributes corresponding to (initial) properties of
nodes
 JavaFX Scene Builder is a GUI for creating FXML files
 The FXMLLoader class reads a FXML file and creates all
the Nodes
Example
A.A. 2014/2015Tecniche di programmazione53
JavaFX Scene Builder
A.A. 2014/2015Tecniche di programmazione54
FXMLLoader
A.A. 2014/2015Tecniche di programmazione55
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(
getClass().getResource("fxml_example.fxml"));
stage.setTitle("FXML Welcome");
stage.setScene(new Scene(root, 300, 275));
stage.show();
}
Linking FXML and Java
A.A. 2014/2015Tecniche di programmazione56
 FXML element may have an associated attribute fx:id
 Nodes may be later retrieved by
 public Node lookup(java.lang.String selector)
 Finds a node with a specified ID in the current sub-tree
 Example:
 scene.lookup("#myId");
 Node references can also be «injected» using the
@FXML annotation (see later)
Events
Introduction to JavaFX
Interacting with Nodes
A.A. 2014/2015Tecniche di programmazione58
 In JavaFX applications, events are notifications that
something has happened.
 An event represents an occurrence of something of interest to
the application
 As a user clicks a button, presses a key, moves a mouse, or
performs other actions, events are dispatched.
 Registered event filters and event handlers within the
application
 receive the event and
 provide a response.
What is an event?
A.A. 2014/2015Tecniche di programmazione59
Event propagation
A.A. 2014/2015Tecniche di programmazione60
 Events are generated on the source node
 Events propagated in the scene graph hierarchy («dispatch
chain»), in two phases
 Dispatching: downwards, from root to source node
 Processes Event Filters registered in the nodes
 Bubbling: upwards, from source node to root
 Processes Event Handlers registered in the nodes
 If you want an application to be notified
when an event occurs, register a filter
or a handler for the event
 Handlers may “consume” the event
Event Handlers
A.A. 2014/2015Tecniche di programmazione61
 Implements the EventHandler interface
 Executed during the event bubbling phase.
 If does not consume the event, it is propagated to the
parent.
 A node can register more than one handler.
 Handlers for a specific event type are executed before
handlers for generic event types.
 For example, a handler for the KeyEvent.KEY_TYPED event is
called before the handler for the InputEvent.ANY event.
 To consume an event, call the consume() method
Registering Event Handlers
A.A. 2014/2015Tecniche di programmazione62
 setOnEvent-type(
EventHandler<? super event-class> value )
 Event-Type
 The type of event that the handler processes (e.g. setOnKeyTyped,
setOnMouseClicked, ...)
 Event-class
 The class that defines the event type (e.g., KeyEvent , MouseEvent, ...)
 Value
 The event handler for event-class (or for one of its super classes)
 Must implement: public void handle(ActionEvent event)
 May be a regular class or an anonymous inline class
Example
A.A. 2014/2015Tecniche di programmazione63
class ButtonActionHandler implements
javafx.event.EventHandler<ActionEvent> {
public ButtonActionHandler (/*params*/) {
// constructor - if needed
}
@Override
public void handle(ActionEvent event) {
Button b = (Button)event.getSource() ;
//...do something
String buttonText = b.getText() ;
// ...
}
}
Button btn = new Button() ;
btn.setOnAction(new ButtonActionHandler()) ;
Event Handler
Registration
Example (inline definition)
A.A. 2014/2015Tecniche di programmazione64
btn.setOnAction(new EventHandler<ActionEvent>() {
public void handle(ActionEvent event) {
System.out.println("Hello World");
}
});
Registration &
Anonymous event handler
Model-View-Controller
JavaFX programming
Application complexity and MVC
A.A. 2014/2015Tecniche di programmazione66
 Interactive, graphical applications exhibit complex
interaction patterns
 Flow of control is in the hand of the user
 Actions are mainly asynchronous
 How to organize the program?
 Where to store data?
 How to decouple application logic from interface details?
 How to keep in sync the inner data with the visibile
interface?
Media Player example
A.A. 2014/2015Tecniche di programmazione67
MVC pattern defined
A.A. 2014/2015Tecniche di programmazione68
Normal life-cycle of interaction
A.A. 2014/2015Tecniche di programmazione69
Mapping concepts to JavaFX
A.A. 2014/2015Tecniche di programmazione70
 View: presenting the UI
 FXML
 The Nodes in the Scene Graph
 Controller: reacting to user actions
 Set of event handlers
 Model: handling the data
 Class(es) including data
 Persistent data in Data Bases
Design Exercise
A.A. 2014/2015Tecniche di programmazione71
 Imagine an application managing a list of items (e.g.,
names)
 Different items in the user interface should manage the
same set of data, with different criteria and actions
 Where do you declare the data class?
 Which class should have access to which?
 Who creates what objects?
A.A. 2014/2015Tecniche di programmazione72
A possible
solution
The Controller in FXML
JavaFX programming
The Controller in FXML
A.A. 2014/2015Tecniche di programmazione74
 Several attributes in FXML help in the definition of the
Controller behavior associated to a scene
 Identification of the Controller class
 Injection of Node identifiers (references)
 Registration of event handlers
 Additionally, the JavaFX Scene Builder may generate a
«controller skeleton» for inclusion in the project
Defining the Controller class
A.A. 2014/2015Tecniche di programmazione75
 The Root element of the scene
graph may specify a fx:
controller attribute
 <BorderPane
id="BorderPane"
xmlns:fx="http://javafx.com
/fxml"
fx:controller="it.polito.te
cnprogr.RuzzleController">
fx:controller attribute
A.A. 2014/2015Tecniche di programmazione76
 Associate a "controller" class with an FXML document
 Automatically create the instance when FXML is loaded
 Should include event handler methods
 May include an initialize() method
 public void initialize();
 called once when the contents of its associated document have
been completely loaded
 any necessary post-processing on the content
Accessing the controller instance
A.A. 2014/2015Tecniche di programmazione77
 The Application often needs to communicate with the
controller object
 E.g., to call setModel()
 FXMLLoader provides this information
URL location = getClass().getResource("example.fxml");
FXMLLoader fxmlLoader = new FXMLLoader(location);
Pane root = (Pane)fxmlLoader.load();
MyController controller =
(MyController)fxmlLoader.getController();
Injection of Node references
A.A. 2014/2015Tecniche di programmazione78
 The controller code may directly access various Nodes in
the associated scene graph
 The attribute @FXML associates a Node variable with
the corresponding node, with the same fx:id value as the
variable name
 No more error-prone «lookup» calls...
 Local variables in the controller instance
 Try:View | Show Sample Controller Skeleton on the
Scene Builder!
@FXML // fx:id="theTitle"
private Label theTitle;
Registration of Event Handlers
A.A. 2014/2015Tecniche di programmazione79
 In FXML, you may set a event handler
through attributes
 onAction, onKeyTyped, onMouseClicked,
... hundreds more ...
 The value should be the #name of a
method in the controller class
 With the right signature for the event
type
<Button fx:id="cercaBtn"
onAction="#doCercaParola"
text="Cerca" />
@FXML
void doCercaParola (
ActionEvent event ) {
Resources
Introduction to JavaFX
Resources
A.A. 2014/2015Tecniche di programmazione84
 Official
 http://www.oracle.com/us/technologies/java/fx/overview/index.
html
 http://www.oracle.com/technetwork/java/javafx/overview/index
.html
 Documents
 http://docs.oracle.com/javafx/
 http://docs.oracle.com/javafx/2/api/index.html
 Blogs
 http://fxexperience.com/
 http://www.learnjavafx.typepad.com/weblog/
 http://community.java.net/community/javafx
Resources
A.A. 2014/2015Tecniche di programmazione85
 API
 http://docs.oracle.com/javafx/2/api/index.html
 Slides/Tips
 http://www.slideshare.net/steveonjava/java-fx-20-a-developers-guide
 http://refcardz.dzone.com/refcardz/getting-started-javafx
 Tutorials/Articles
 http://docs.oracle.com/javafx/2/events/jfxpub-events.htm
 http://amyfowlersblog.wordpress.com/2011/06/02/javafx2-0-layout-a-
class-tour/
 Examples (Downloads)
 JavaFX Demos and Samples, at
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-
downloads-1880260.html
Resources
A.A. 2014/2015Tecniche di programmazione86
 FXML Controller
 http://docs.oracle.com/javafx/2/api/javafx/fxml/doc-
files/introduction_to_fxml.html#controllers
 Charts
 Using JavaFX Charts tutorial:
http://docs.oracle.com/javafx/2/charts/jfxpub-charts.htm
 Books
 Head First Design Patterns, chapter 12
Resources
A.A. 2014/2015Tecniche di programmazione87
 Properties and Bindings
 http://docs.oracle.com/javafx/2/binding/jfxpub-binding.htm
 http://thierrywasyl.wordpress.com/2012/07/29/properties-and-
bindings-in-javafx/
Licenza d’uso
A.A. 2014/2015Tecniche di programmazione88
 Queste diapositive sono distribuite con licenza Creative Commons
“Attribuzione - Non commerciale - Condividi allo stesso modo (CC
BY-NC-SA)”
 Sei libero:
 di riprodurre, distribuire, comunicare al pubblico, esporre in pubblico,
rappresentare, eseguire e recitare quest'opera
 di modificare quest'opera
 Alle seguenti condizioni:
 Attribuzione — Devi attribuire la paternità dell'opera agli autori
originali e in modo tale da non suggerire che essi avallino te o il modo in
cui tu usi l'opera.
 Non commerciale — Non puoi usare quest'opera per fini
commerciali.
 Condividi allo stesso modo — Se alteri o trasformi quest'opera, o se
la usi per crearne un'altra, puoi distribuire l'opera risultante solo con una
licenza identica o equivalente a questa.
 http://creativecommons.org/licenses/by-nc-sa/3.0/

More Related Content

What's hot (19)

JSF basics
JSF basicsJSF basics
JSF basics
airbo
 
Ctools presentation
Ctools presentationCtools presentation
Ctools presentation
Digitaria
 
Spring MVC
Spring MVCSpring MVC
Spring MVC
yuvalb
 
Introduction to jsf 2
Introduction to jsf 2Introduction to jsf 2
Introduction to jsf 2
yousry ibrahim
 
Web internship Yii Framework
Web internship  Yii FrameworkWeb internship  Yii Framework
Web internship Yii Framework
Noveo
 
From Backbone to Ember and Back(bone) Again
From Backbone to Ember and Back(bone) AgainFrom Backbone to Ember and Back(bone) Again
From Backbone to Ember and Back(bone) Again
jonknapp
 
2 Day - WPF Training by Adil Mughal
2 Day - WPF Training by Adil Mughal2 Day - WPF Training by Adil Mughal
2 Day - WPF Training by Adil Mughal
Adil Mughal
 
Vaadin Components
Vaadin ComponentsVaadin Components
Vaadin Components
Joonas Lehtinen
 
XPages Mobile, #dd13
XPages Mobile, #dd13XPages Mobile, #dd13
XPages Mobile, #dd13
Dominopoint - Italian Lotus User Group
 
Refactor Large applications with Backbone
Refactor Large applications with BackboneRefactor Large applications with Backbone
Refactor Large applications with Backbone
ColdFusionConference
 
Introduction to XAML and WPF
Introduction to XAML and WPFIntroduction to XAML and WPF
Introduction to XAML and WPF
Doncho Minkov
 
Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011
Chris Alfano
 
當ZK遇見Front-End
當ZK遇見Front-End當ZK遇見Front-End
當ZK遇見Front-End
祁源 朱
 
DataFX 8 (JavaOne 2014)
DataFX 8 (JavaOne 2014)DataFX 8 (JavaOne 2014)
DataFX 8 (JavaOne 2014)
Hendrik Ebbers
 
Svg, canvas e animations in angular (3 maggio 2019)
Svg, canvas e animations in angular (3 maggio 2019)Svg, canvas e animations in angular (3 maggio 2019)
Svg, canvas e animations in angular (3 maggio 2019)
Leonardo Buscemi
 
Angular JS blog tutorial
Angular JS blog tutorialAngular JS blog tutorial
Angular JS blog tutorial
Claude Tech
 
Extend sdk
Extend sdkExtend sdk
Extend sdk
Harsha Nagaraj
 
JSF 2.0 Preview
JSF 2.0 PreviewJSF 2.0 Preview
JSF 2.0 Preview
Skills Matter
 
From Swing to JavaFX
From Swing to JavaFXFrom Swing to JavaFX
From Swing to JavaFX
Yuichi Sakuraba
 
JSF basics
JSF basicsJSF basics
JSF basics
airbo
 
Ctools presentation
Ctools presentationCtools presentation
Ctools presentation
Digitaria
 
Spring MVC
Spring MVCSpring MVC
Spring MVC
yuvalb
 
Web internship Yii Framework
Web internship  Yii FrameworkWeb internship  Yii Framework
Web internship Yii Framework
Noveo
 
From Backbone to Ember and Back(bone) Again
From Backbone to Ember and Back(bone) AgainFrom Backbone to Ember and Back(bone) Again
From Backbone to Ember and Back(bone) Again
jonknapp
 
2 Day - WPF Training by Adil Mughal
2 Day - WPF Training by Adil Mughal2 Day - WPF Training by Adil Mughal
2 Day - WPF Training by Adil Mughal
Adil Mughal
 
Refactor Large applications with Backbone
Refactor Large applications with BackboneRefactor Large applications with Backbone
Refactor Large applications with Backbone
ColdFusionConference
 
Introduction to XAML and WPF
Introduction to XAML and WPFIntroduction to XAML and WPF
Introduction to XAML and WPF
Doncho Minkov
 
Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011
Chris Alfano
 
當ZK遇見Front-End
當ZK遇見Front-End當ZK遇見Front-End
當ZK遇見Front-End
祁源 朱
 
DataFX 8 (JavaOne 2014)
DataFX 8 (JavaOne 2014)DataFX 8 (JavaOne 2014)
DataFX 8 (JavaOne 2014)
Hendrik Ebbers
 
Svg, canvas e animations in angular (3 maggio 2019)
Svg, canvas e animations in angular (3 maggio 2019)Svg, canvas e animations in angular (3 maggio 2019)
Svg, canvas e animations in angular (3 maggio 2019)
Leonardo Buscemi
 
Angular JS blog tutorial
Angular JS blog tutorialAngular JS blog tutorial
Angular JS blog tutorial
Claude Tech
 

Viewers also liked (17)

Indicatori quantitativi per la valutazione dei processi
Indicatori quantitativi per la valutazione dei processiIndicatori quantitativi per la valutazione dei processi
Indicatori quantitativi per la valutazione dei processi
Fulvio Corno
 
AmI 2015 - Design Process
AmI 2015 - Design ProcessAmI 2015 - Design Process
AmI 2015 - Design Process
Fulvio Corno
 
AmI 2015 - Databases in Python
AmI 2015 - Databases in PythonAmI 2015 - Databases in Python
AmI 2015 - Databases in Python
Fulvio Corno
 
Definition of Ambient Intelligence
Definition of Ambient IntelligenceDefinition of Ambient Intelligence
Definition of Ambient Intelligence
Fulvio Corno
 
Gli anelli mancanti per l’Ambient Intelligence
Gli anelli mancanti per l’Ambient IntelligenceGli anelli mancanti per l’Ambient Intelligence
Gli anelli mancanti per l’Ambient Intelligence
Fulvio Corno
 
Introduzione al Corso - Tecnologie per la Disabilità 2014/2015
Introduzione al Corso - Tecnologie per la Disabilità 2014/2015Introduzione al Corso - Tecnologie per la Disabilità 2014/2015
Introduzione al Corso - Tecnologie per la Disabilità 2014/2015
Fulvio Corno
 
Ausili: definizioni e normative - Tecnologie per la Disabilità 2014/2015
Ausili: definizioni e normative - Tecnologie per la Disabilità 2014/2015Ausili: definizioni e normative - Tecnologie per la Disabilità 2014/2015
Ausili: definizioni e normative - Tecnologie per la Disabilità 2014/2015
Fulvio Corno
 
Ambient Intelligence Design Process
Ambient Intelligence Design ProcessAmbient Intelligence Design Process
Ambient Intelligence Design Process
Fulvio Corno
 
Ambient Intelligence - Course Introduction
Ambient Intelligence - Course IntroductionAmbient Intelligence - Course Introduction
Ambient Intelligence - Course Introduction
Fulvio Corno
 
Introduzione al Corso - Tecniche di Programmazione 2015
Introduzione al Corso - Tecniche di Programmazione 2015Introduzione al Corso - Tecniche di Programmazione 2015
Introduzione al Corso - Tecniche di Programmazione 2015
Fulvio Corno
 
Accessibilità dei siti web
Accessibilità dei siti webAccessibilità dei siti web
Accessibilità dei siti web
Fulvio Corno
 
Ingegneri e disabilità: abbattere il muro
Ingegneri e disabilità: abbattere il muroIngegneri e disabilità: abbattere il muro
Ingegneri e disabilità: abbattere il muro
Fulvio Corno
 
Ambient Intelligence: Theme of the Year 2016
Ambient Intelligence: Theme of the Year 2016Ambient Intelligence: Theme of the Year 2016
Ambient Intelligence: Theme of the Year 2016
Fulvio Corno
 
A Healthcare Support System for Assisted Living Facilities: an IoT Solution
A Healthcare Support System for Assisted Living Facilities: an IoT SolutionA Healthcare Support System for Assisted Living Facilities: an IoT Solution
A Healthcare Support System for Assisted Living Facilities: an IoT Solution
Fulvio Corno
 
Ambient intelligence - an overview
Ambient intelligence - an overviewAmbient intelligence - an overview
Ambient intelligence - an overview
Fulvio Corno
 
Dates and Times in Java 7 and Java 8
Dates and Times in Java 7 and Java 8Dates and Times in Java 7 and Java 8
Dates and Times in Java 7 and Java 8
Fulvio Corno
 
Internet of Things - Cos'è e cosa ci posso fare?
Internet of Things - Cos'è e cosa ci posso fare?Internet of Things - Cos'è e cosa ci posso fare?
Internet of Things - Cos'è e cosa ci posso fare?
Fulvio Corno
 
Indicatori quantitativi per la valutazione dei processi
Indicatori quantitativi per la valutazione dei processiIndicatori quantitativi per la valutazione dei processi
Indicatori quantitativi per la valutazione dei processi
Fulvio Corno
 
AmI 2015 - Design Process
AmI 2015 - Design ProcessAmI 2015 - Design Process
AmI 2015 - Design Process
Fulvio Corno
 
AmI 2015 - Databases in Python
AmI 2015 - Databases in PythonAmI 2015 - Databases in Python
AmI 2015 - Databases in Python
Fulvio Corno
 
Definition of Ambient Intelligence
Definition of Ambient IntelligenceDefinition of Ambient Intelligence
Definition of Ambient Intelligence
Fulvio Corno
 
Gli anelli mancanti per l’Ambient Intelligence
Gli anelli mancanti per l’Ambient IntelligenceGli anelli mancanti per l’Ambient Intelligence
Gli anelli mancanti per l’Ambient Intelligence
Fulvio Corno
 
Introduzione al Corso - Tecnologie per la Disabilità 2014/2015
Introduzione al Corso - Tecnologie per la Disabilità 2014/2015Introduzione al Corso - Tecnologie per la Disabilità 2014/2015
Introduzione al Corso - Tecnologie per la Disabilità 2014/2015
Fulvio Corno
 
Ausili: definizioni e normative - Tecnologie per la Disabilità 2014/2015
Ausili: definizioni e normative - Tecnologie per la Disabilità 2014/2015Ausili: definizioni e normative - Tecnologie per la Disabilità 2014/2015
Ausili: definizioni e normative - Tecnologie per la Disabilità 2014/2015
Fulvio Corno
 
Ambient Intelligence Design Process
Ambient Intelligence Design ProcessAmbient Intelligence Design Process
Ambient Intelligence Design Process
Fulvio Corno
 
Ambient Intelligence - Course Introduction
Ambient Intelligence - Course IntroductionAmbient Intelligence - Course Introduction
Ambient Intelligence - Course Introduction
Fulvio Corno
 
Introduzione al Corso - Tecniche di Programmazione 2015
Introduzione al Corso - Tecniche di Programmazione 2015Introduzione al Corso - Tecniche di Programmazione 2015
Introduzione al Corso - Tecniche di Programmazione 2015
Fulvio Corno
 
Accessibilità dei siti web
Accessibilità dei siti webAccessibilità dei siti web
Accessibilità dei siti web
Fulvio Corno
 
Ingegneri e disabilità: abbattere il muro
Ingegneri e disabilità: abbattere il muroIngegneri e disabilità: abbattere il muro
Ingegneri e disabilità: abbattere il muro
Fulvio Corno
 
Ambient Intelligence: Theme of the Year 2016
Ambient Intelligence: Theme of the Year 2016Ambient Intelligence: Theme of the Year 2016
Ambient Intelligence: Theme of the Year 2016
Fulvio Corno
 
A Healthcare Support System for Assisted Living Facilities: an IoT Solution
A Healthcare Support System for Assisted Living Facilities: an IoT SolutionA Healthcare Support System for Assisted Living Facilities: an IoT Solution
A Healthcare Support System for Assisted Living Facilities: an IoT Solution
Fulvio Corno
 
Ambient intelligence - an overview
Ambient intelligence - an overviewAmbient intelligence - an overview
Ambient intelligence - an overview
Fulvio Corno
 
Dates and Times in Java 7 and Java 8
Dates and Times in Java 7 and Java 8Dates and Times in Java 7 and Java 8
Dates and Times in Java 7 and Java 8
Fulvio Corno
 
Internet of Things - Cos'è e cosa ci posso fare?
Internet of Things - Cos'è e cosa ci posso fare?Internet of Things - Cos'è e cosa ci posso fare?
Internet of Things - Cos'è e cosa ci posso fare?
Fulvio Corno
 
Ad

Similar to Programming with JavaFX (20)

JavaFX programming
JavaFX programmingJavaFX programming
JavaFX programming
Fulvio Corno
 
JavaFx Introduction, Basic JavaFx Architecture
JavaFx Introduction, Basic JavaFx ArchitectureJavaFx Introduction, Basic JavaFx Architecture
JavaFx Introduction, Basic JavaFx Architecture
Jainul Musani
 
JavaFXaeurwstkiryikryiuyoyiloyuikygi.pdf
JavaFXaeurwstkiryikryiuyoyiloyuikygi.pdfJavaFXaeurwstkiryikryiuyoyiloyuikygi.pdf
JavaFXaeurwstkiryikryiuyoyiloyuikygi.pdf
kassyemariyam21
 
Demo on JavaFX
Demo on JavaFXDemo on JavaFX
Demo on JavaFX
Knoldus Inc.
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
Knoldus Inc.
 
Unit 1 informatica en ingles
Unit 1 informatica en inglesUnit 1 informatica en ingles
Unit 1 informatica en ingles
Marisa Torrecillas
 
Unit i informatica en ingles
Unit i informatica en inglesUnit i informatica en ingles
Unit i informatica en ingles
Marisa Torrecillas
 
UNIT 5-JavaFX Event Handling, Controls and Components.pdf
UNIT 5-JavaFX Event Handling, Controls and Components.pdfUNIT 5-JavaFX Event Handling, Controls and Components.pdf
UNIT 5-JavaFX Event Handling, Controls and Components.pdf
SakkaravarthiS1
 
GUI design using JAVAFX.ppt
GUI design using JAVAFX.pptGUI design using JAVAFX.ppt
GUI design using JAVAFX.ppt
TabassumMaktum
 
JavaFX for Java Developers
JavaFX for Java DevelopersJavaFX for Java Developers
JavaFX for Java Developers
Sten Anderson
 
Introduction to JavaFX
Introduction to JavaFXIntroduction to JavaFX
Introduction to JavaFX
Houari ZEGAI
 
The Brainify App - JavaFx
The Brainify App - JavaFxThe Brainify App - JavaFx
The Brainify App - JavaFx
Mohd Shamweel
 
JavaFX Presentation
JavaFX PresentationJavaFX Presentation
JavaFX Presentation
Mochamad Taufik Mulyadi
 
Javafxpressentation 140524053934-phpapp01 (1)
Javafxpressentation 140524053934-phpapp01 (1)Javafxpressentation 140524053934-phpapp01 (1)
Javafxpressentation 140524053934-phpapp01 (1)
ssuser4f9de3
 
OpenJFX on Android and Devices
OpenJFX on Android and DevicesOpenJFX on Android and Devices
OpenJFX on Android and Devices
Stephen Chin
 
Introduction to JavaFX
Introduction to JavaFXIntroduction to JavaFX
Introduction to JavaFX
Mindfire Solutions
 
Javafx tutorial
Javafx tutorialJavafx tutorial
Javafx tutorial
sloumaallagui1
 
Javafx tutorial
Javafx tutorialJavafx tutorial
Javafx tutorial
HarikaReddy115
 
Javafx tutorial
Javafx tutorialJavafx tutorial
Javafx tutorial
Shaman Gupta
 
JavaOne - The JavaFX Community and Ecosystem
JavaOne - The JavaFX Community and EcosystemJavaOne - The JavaFX Community and Ecosystem
JavaOne - The JavaFX Community and Ecosystem
Alexander Casall
 
JavaFX programming
JavaFX programmingJavaFX programming
JavaFX programming
Fulvio Corno
 
JavaFx Introduction, Basic JavaFx Architecture
JavaFx Introduction, Basic JavaFx ArchitectureJavaFx Introduction, Basic JavaFx Architecture
JavaFx Introduction, Basic JavaFx Architecture
Jainul Musani
 
JavaFXaeurwstkiryikryiuyoyiloyuikygi.pdf
JavaFXaeurwstkiryikryiuyoyiloyuikygi.pdfJavaFXaeurwstkiryikryiuyoyiloyuikygi.pdf
JavaFXaeurwstkiryikryiuyoyiloyuikygi.pdf
kassyemariyam21
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
Knoldus Inc.
 
UNIT 5-JavaFX Event Handling, Controls and Components.pdf
UNIT 5-JavaFX Event Handling, Controls and Components.pdfUNIT 5-JavaFX Event Handling, Controls and Components.pdf
UNIT 5-JavaFX Event Handling, Controls and Components.pdf
SakkaravarthiS1
 
GUI design using JAVAFX.ppt
GUI design using JAVAFX.pptGUI design using JAVAFX.ppt
GUI design using JAVAFX.ppt
TabassumMaktum
 
JavaFX for Java Developers
JavaFX for Java DevelopersJavaFX for Java Developers
JavaFX for Java Developers
Sten Anderson
 
Introduction to JavaFX
Introduction to JavaFXIntroduction to JavaFX
Introduction to JavaFX
Houari ZEGAI
 
The Brainify App - JavaFx
The Brainify App - JavaFxThe Brainify App - JavaFx
The Brainify App - JavaFx
Mohd Shamweel
 
Javafxpressentation 140524053934-phpapp01 (1)
Javafxpressentation 140524053934-phpapp01 (1)Javafxpressentation 140524053934-phpapp01 (1)
Javafxpressentation 140524053934-phpapp01 (1)
ssuser4f9de3
 
OpenJFX on Android and Devices
OpenJFX on Android and DevicesOpenJFX on Android and Devices
OpenJFX on Android and Devices
Stephen Chin
 
JavaOne - The JavaFX Community and Ecosystem
JavaOne - The JavaFX Community and EcosystemJavaOne - The JavaFX Community and Ecosystem
JavaOne - The JavaFX Community and Ecosystem
Alexander Casall
 
Ad

Recently uploaded (20)

Dashboard Overview in Odoo 18 - Odoo Slides
Dashboard Overview in Odoo 18 - Odoo SlidesDashboard Overview in Odoo 18 - Odoo Slides
Dashboard Overview in Odoo 18 - Odoo Slides
Celine George
 
Diana Enriquez Wauconda - A Wauconda-Based Educator
Diana Enriquez Wauconda - A Wauconda-Based EducatorDiana Enriquez Wauconda - A Wauconda-Based Educator
Diana Enriquez Wauconda - A Wauconda-Based Educator
Diana Enriquez Wauconda
 
Introduction to Online CME for Nurse Practitioners.pdf
Introduction to Online CME for Nurse Practitioners.pdfIntroduction to Online CME for Nurse Practitioners.pdf
Introduction to Online CME for Nurse Practitioners.pdf
CME4Life
 
CBSE - Grade 11 - Mathematics - Ch 2 - Relations And Functions - Notes (PDF F...
CBSE - Grade 11 - Mathematics - Ch 2 - Relations And Functions - Notes (PDF F...CBSE - Grade 11 - Mathematics - Ch 2 - Relations And Functions - Notes (PDF F...
CBSE - Grade 11 - Mathematics - Ch 2 - Relations And Functions - Notes (PDF F...
Sritoma Majumder
 
Uterine Prolapse, causes type and classification,its managment
Uterine Prolapse, causes type and classification,its managmentUterine Prolapse, causes type and classification,its managment
Uterine Prolapse, causes type and classification,its managment
Ritu480198
 
State institute of educational technology
State institute of educational technologyState institute of educational technology
State institute of educational technology
vp5806484
 
"Hymenoptera: A Diverse and Fascinating Order".pptx
"Hymenoptera: A Diverse and Fascinating Order".pptx"Hymenoptera: A Diverse and Fascinating Order".pptx
"Hymenoptera: A Diverse and Fascinating Order".pptx
Arshad Shaikh
 
STUDENT LOAN TRUST FUND DEFAULTERS GHANA
STUDENT LOAN TRUST FUND DEFAULTERS GHANASTUDENT LOAN TRUST FUND DEFAULTERS GHANA
STUDENT LOAN TRUST FUND DEFAULTERS GHANA
Kweku Zurek
 
PHYSIOLOGY & SPORTS INJURY by Diwakar Sir
PHYSIOLOGY & SPORTS INJURY by Diwakar SirPHYSIOLOGY & SPORTS INJURY by Diwakar Sir
PHYSIOLOGY & SPORTS INJURY by Diwakar Sir
Diwakar Kashyap
 
Order: Odonata Isoptera and Thysanoptera.pptx
Order: Odonata Isoptera and Thysanoptera.pptxOrder: Odonata Isoptera and Thysanoptera.pptx
Order: Odonata Isoptera and Thysanoptera.pptx
Arshad Shaikh
 
Pragya Champion's Chalice 2025 Set , General Quiz
Pragya Champion's Chalice 2025 Set , General QuizPragya Champion's Chalice 2025 Set , General Quiz
Pragya Champion's Chalice 2025 Set , General Quiz
Pragya - UEM Kolkata Quiz Club
 
Odoo 18 Point of Sale PWA - Odoo Slides
Odoo 18 Point of Sale PWA  - Odoo  SlidesOdoo 18 Point of Sale PWA  - Odoo  Slides
Odoo 18 Point of Sale PWA - Odoo Slides
Celine George
 
How to Create Time Off Request in Odoo 18 Time Off
How to Create Time Off Request in Odoo 18 Time OffHow to Create Time Off Request in Odoo 18 Time Off
How to Create Time Off Request in Odoo 18 Time Off
Celine George
 
HUMAN SKELETAL SYSTEM ANATAMY AND PHYSIOLOGY
HUMAN SKELETAL SYSTEM ANATAMY AND PHYSIOLOGYHUMAN SKELETAL SYSTEM ANATAMY AND PHYSIOLOGY
HUMAN SKELETAL SYSTEM ANATAMY AND PHYSIOLOGY
DHARMENDRA SAHU
 
Types of Actions in Odoo 18 - Odoo Slides
Types of Actions in Odoo 18 - Odoo SlidesTypes of Actions in Odoo 18 - Odoo Slides
Types of Actions in Odoo 18 - Odoo Slides
Celine George
 
THE CHURCH AND ITS IMPACT: FOSTERING CHRISTIAN EDUCATION
THE CHURCH AND ITS IMPACT: FOSTERING CHRISTIAN EDUCATIONTHE CHURCH AND ITS IMPACT: FOSTERING CHRISTIAN EDUCATION
THE CHURCH AND ITS IMPACT: FOSTERING CHRISTIAN EDUCATION
PROF. PAUL ALLIEU KAMARA
 
প্রত্যুৎপন্নমতিত্ব - Prottutponnomotittwa 2025.pdf
প্রত্যুৎপন্নমতিত্ব - Prottutponnomotittwa 2025.pdfপ্রত্যুৎপন্নমতিত্ব - Prottutponnomotittwa 2025.pdf
প্রত্যুৎপন্নমতিত্ব - Prottutponnomotittwa 2025.pdf
Pragya - UEM Kolkata Quiz Club
 
"Orthoptera: Grasshoppers, Crickets, and Katydids pptx
"Orthoptera: Grasshoppers, Crickets, and Katydids pptx"Orthoptera: Grasshoppers, Crickets, and Katydids pptx
"Orthoptera: Grasshoppers, Crickets, and Katydids pptx
Arshad Shaikh
 
Multicultural approach in education - B.Ed
Multicultural approach in education - B.EdMulticultural approach in education - B.Ed
Multicultural approach in education - B.Ed
prathimagowda443
 
How to Create a Stage or a Pipeline in Odoo 18 CRM
How to Create a Stage or a Pipeline in Odoo 18 CRMHow to Create a Stage or a Pipeline in Odoo 18 CRM
How to Create a Stage or a Pipeline in Odoo 18 CRM
Celine George
 
Dashboard Overview in Odoo 18 - Odoo Slides
Dashboard Overview in Odoo 18 - Odoo SlidesDashboard Overview in Odoo 18 - Odoo Slides
Dashboard Overview in Odoo 18 - Odoo Slides
Celine George
 
Diana Enriquez Wauconda - A Wauconda-Based Educator
Diana Enriquez Wauconda - A Wauconda-Based EducatorDiana Enriquez Wauconda - A Wauconda-Based Educator
Diana Enriquez Wauconda - A Wauconda-Based Educator
Diana Enriquez Wauconda
 
Introduction to Online CME for Nurse Practitioners.pdf
Introduction to Online CME for Nurse Practitioners.pdfIntroduction to Online CME for Nurse Practitioners.pdf
Introduction to Online CME for Nurse Practitioners.pdf
CME4Life
 
CBSE - Grade 11 - Mathematics - Ch 2 - Relations And Functions - Notes (PDF F...
CBSE - Grade 11 - Mathematics - Ch 2 - Relations And Functions - Notes (PDF F...CBSE - Grade 11 - Mathematics - Ch 2 - Relations And Functions - Notes (PDF F...
CBSE - Grade 11 - Mathematics - Ch 2 - Relations And Functions - Notes (PDF F...
Sritoma Majumder
 
Uterine Prolapse, causes type and classification,its managment
Uterine Prolapse, causes type and classification,its managmentUterine Prolapse, causes type and classification,its managment
Uterine Prolapse, causes type and classification,its managment
Ritu480198
 
State institute of educational technology
State institute of educational technologyState institute of educational technology
State institute of educational technology
vp5806484
 
"Hymenoptera: A Diverse and Fascinating Order".pptx
"Hymenoptera: A Diverse and Fascinating Order".pptx"Hymenoptera: A Diverse and Fascinating Order".pptx
"Hymenoptera: A Diverse and Fascinating Order".pptx
Arshad Shaikh
 
STUDENT LOAN TRUST FUND DEFAULTERS GHANA
STUDENT LOAN TRUST FUND DEFAULTERS GHANASTUDENT LOAN TRUST FUND DEFAULTERS GHANA
STUDENT LOAN TRUST FUND DEFAULTERS GHANA
Kweku Zurek
 
PHYSIOLOGY & SPORTS INJURY by Diwakar Sir
PHYSIOLOGY & SPORTS INJURY by Diwakar SirPHYSIOLOGY & SPORTS INJURY by Diwakar Sir
PHYSIOLOGY & SPORTS INJURY by Diwakar Sir
Diwakar Kashyap
 
Order: Odonata Isoptera and Thysanoptera.pptx
Order: Odonata Isoptera and Thysanoptera.pptxOrder: Odonata Isoptera and Thysanoptera.pptx
Order: Odonata Isoptera and Thysanoptera.pptx
Arshad Shaikh
 
Odoo 18 Point of Sale PWA - Odoo Slides
Odoo 18 Point of Sale PWA  - Odoo  SlidesOdoo 18 Point of Sale PWA  - Odoo  Slides
Odoo 18 Point of Sale PWA - Odoo Slides
Celine George
 
How to Create Time Off Request in Odoo 18 Time Off
How to Create Time Off Request in Odoo 18 Time OffHow to Create Time Off Request in Odoo 18 Time Off
How to Create Time Off Request in Odoo 18 Time Off
Celine George
 
HUMAN SKELETAL SYSTEM ANATAMY AND PHYSIOLOGY
HUMAN SKELETAL SYSTEM ANATAMY AND PHYSIOLOGYHUMAN SKELETAL SYSTEM ANATAMY AND PHYSIOLOGY
HUMAN SKELETAL SYSTEM ANATAMY AND PHYSIOLOGY
DHARMENDRA SAHU
 
Types of Actions in Odoo 18 - Odoo Slides
Types of Actions in Odoo 18 - Odoo SlidesTypes of Actions in Odoo 18 - Odoo Slides
Types of Actions in Odoo 18 - Odoo Slides
Celine George
 
THE CHURCH AND ITS IMPACT: FOSTERING CHRISTIAN EDUCATION
THE CHURCH AND ITS IMPACT: FOSTERING CHRISTIAN EDUCATIONTHE CHURCH AND ITS IMPACT: FOSTERING CHRISTIAN EDUCATION
THE CHURCH AND ITS IMPACT: FOSTERING CHRISTIAN EDUCATION
PROF. PAUL ALLIEU KAMARA
 
প্রত্যুৎপন্নমতিত্ব - Prottutponnomotittwa 2025.pdf
প্রত্যুৎপন্নমতিত্ব - Prottutponnomotittwa 2025.pdfপ্রত্যুৎপন্নমতিত্ব - Prottutponnomotittwa 2025.pdf
প্রত্যুৎপন্নমতিত্ব - Prottutponnomotittwa 2025.pdf
Pragya - UEM Kolkata Quiz Club
 
"Orthoptera: Grasshoppers, Crickets, and Katydids pptx
"Orthoptera: Grasshoppers, Crickets, and Katydids pptx"Orthoptera: Grasshoppers, Crickets, and Katydids pptx
"Orthoptera: Grasshoppers, Crickets, and Katydids pptx
Arshad Shaikh
 
Multicultural approach in education - B.Ed
Multicultural approach in education - B.EdMulticultural approach in education - B.Ed
Multicultural approach in education - B.Ed
prathimagowda443
 
How to Create a Stage or a Pipeline in Odoo 18 CRM
How to Create a Stage or a Pipeline in Odoo 18 CRMHow to Create a Stage or a Pipeline in Odoo 18 CRM
How to Create a Stage or a Pipeline in Odoo 18 CRM
Celine George
 

Programming with JavaFX

  • 1. Programming with JavaFX Tecniche di Programmazione – A.A. 2014/2015
  • 2. Summary A.A. 2014/2015Tecniche di programmazione2 1. About and History 2. Basic concepts 3. Minimal JavaFX Application 4. Application structure 5. The Scene Graph 6. Events 7. Model-View-Controller 8. The Controller in FXML 9. Properties and bindings 10. Resources
  • 4. GUI in Java A.A. 2014/2015Tecniche di programmazione4  Graphic framework available in Java  Swing  Extremely powerful, many extensions available  Complex to master, requires low-level handling  Hard to create visually pleasing applications  Alternatives available  Most notable: SWT (Eclipse)  Still cumbersome to master  On a different Universe, web-based user interfaces became nicer and faster to create
  • 5. JavaFX 1.0 – forget it A.A. 2014/2015Tecniche di programmazione5  JavaFX 1 and JavaFX 2 are completely different  Version 1 relied on a “scripting language” to describe scenes, with ‘hooks’ to activate Java code  JavaFX 1.x is now deprecated
  • 6. JavaFX 2.x A.A. 2014/2015Tecniche di programmazione6  Redesigned from scratch  The JavaFX 2.x framework is entirely written in Java  For visual layout, an XML file may also be used (called FXML)  Graphic appearance borrows from web-standard CSS style sheets  UI programming is based on easy to handle events and bindings  Oracle plans to deprecate Swing in favor of JavaFX 2  Now called JavaFX 8 (after Java 8 – JDK 1.8)
  • 7. Getting and running JavaFX A.A. 2014/2015Tecniche di programmazione7  JavaFX is already included in Oracle JDK 7 and JDK8  Not in JDK 6.x  Not in OpenJDK (beware, Linux users!)  JDK 8 includes significant JavaFX improvements.  Recommended:  JavaFX Scene Builder  Eclipse: e(fx)clipse plugin, available in the Eclipse Marketplace  Download links are in the course webpage
  • 9. Key concepts in JavaFX A.A. 2014/2015Tecniche di programmazione9  Stage: where the application will be displayed (e.g., a Windows’ window)  Scene: one container of Nodes that compose one “page” of your application  Node: an element in the Scene, with a visual appearance and an interactive behavior. Nodes may be hierarchically nested My best friend is the JavaFX JavaDoc API http://docs.oracle.com/javase/8/javafx/api/
  • 10. Some ‘Leaf’ Nodes (Controls) A.A. 2014/2015Tecniche di programmazione10
  • 11. Some ‘Parent’ Nodes (Container ‘Panes’) A.A. 2014/2015Tecniche di programmazione11  BorderPane (5-areas)  Hbox,Vbox (linear sequence)  StackPane (overlay all children)  GridPane (row x columns)  FlowPane (flowing boxes, wrap around)  TilePane (flowpane with equally sized boxes)  AnchorPane (magnetically attach nodes at corners or sides)
  • 12. Some Nodes (Charts) A.A. 2014/2015Tecniche di programmazione12
  • 13. Nodes family A.A. 2014/2015Tecniche di programmazione13 javafx.scene.Node Parent Control ChoiceBox ComboBoxBase ColorPicker ComboBox Labeled ButtonBase Button CheckBox MenuButton ToggleButton Cell Label TitledPane ListView MenuBar Separator Slider TabPane TextInputControl TextArea TextField ToolBar TreeView Group Region Axis Chart Pane AnchorPane BorderPane FlowPane GridPane HBox StackPane TilePane VBox WebView Shape Arc Circle Line Polygon Polyline Rectangle Text Canvas Imageview Focus on Panes and Controls
  • 14. And more coming… A.A. 2014/2015Tecniche di programmazione14 http://jfxtras.org/
  • 15. And more coming… A.A. 2014/2015Tecniche di programmazione15 http://fxexperience.com/controlsfx/
  • 16. Empty JavaFX window A.A. 2014/2015Tecniche di programmazione16 public class Main extends Application { @Override public void start(Stage stage) { Group root = new Group(); // the root is Group or Pane Scene scene = new Scene(root, 500, 500, Color.BLACK); stage.setTitle("JavaFX Demo"); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(args); } }
  • 17. Adding some shape A.A. 2014/2015Tecniche di programmazione17 public class Main extends Application { @Override public void start(Stage stage) { Group root = new Group(); Scene scene = new Scene(root, 500, 500, Color.BLACK); stage.setTitle("JavaFX Demo"); Rectangle rect = new Rectangle(25,25,250,250); r.setFill(Color.BLUE); root.getChildren().add(rect); stage.setScene(scene); stage.show(); } }
  • 18. How to add scene content A.A. 2014/2015Tecniche di programmazione18  In Java code  By creating and adding new Node subclasses  Standard way, in Java (boring and error-prone)  By using node Builder classes  Programming pattern, later on…  In FXML  By writing XML directly  By using the Scene Editor  And loading the FXML into the application
  • 19. JavaFX Scene Builder 2.0 A.A. 2014/2015Tecniche di programmazione19
  • 20. FXML fragment A.A. 2014/2015Tecniche di programmazione20 . . . <HBox id="HBox" alignment="CENTER" spacing="15.0" AnchorPane.rightAnchor="23.0" AnchorPane.topAnchor="22.0"> <children> <Button id="button1" fx:id="newIssue" onAction="#newIssueFired" text="New" /> <Button id="button2" fx:id="saveIssue" onAction="#saveIssueFired" text="Save" /> <Button id="button3" fx:id="deleteIssue" onAction="#deleteIssueFired" text="Delete" /> </children> </HBox> <ImageView id="IssueTrackingLite" layoutX="14.0" layoutY="20.0"> <image> <Image url="@IssueTrackingLite.png" preserveRatio="true" smooth="true" /> </image> </ImageView> . . .
  • 21. Building a scene from FXML A.A. 2014/2015Tecniche di programmazione21 public void start(Stage stage) throws Exception { Parent root = FXMLLoader.load( getClass().getResource("circle.fxml")); stage.setTitle("Circle Demo"); stage.setScene(new Scene(root, 500, 150)); stage.show(); }
  • 23. Separation of concerns A.A. 2014/2015Tecniche di programmazione23
  • 24. Typical Class Diagram A.A. 2014/2015Tecniche di programmazione25
  • 25. General rules A.A. 2014/2015Tecniche di programmazione26  A JavaFX application extends javafx.application.Application  The main() method should call Application.launch()  The start() method is the main entry point for all JavaFX applications  Called with a Stage connected to the Operating System’s window  The content of the scene is represented as a hierarchical scene graph of nodes  Stage is the top-level JavaFX container  Scene is the container for all content
  • 26. Minimal example A.A. 2014/2015Tecniche di programmazione27 public class HelloWorld extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) { primaryStage.setTitle("Hello World!"); StackPane root = new StackPane(); Button btn = new Button(); btn.setText("Say 'Hello World'"); root.getChildren().add(btn); primaryStage.setScene(new Scene(root, 300, 250)); primaryStage.show(); } }
  • 27. Stage vs. Scene javafx.stage.Stage javafx.scene.Scene A.A. 2014/2015Tecniche di programmazione28  The JavaFX Stage class is the top level JavaFX container.  The primary Stage is constructed by the platform.  Additional Stage objects may be constructed by the application.  A stage can optionally have an owner Window.  The container for all content in a scene graph  The application must specify the root Node for the scene graph  Root may be Group (clips), Region, Control (resizes)  If no initial size is specified, it will automatically compute it
  • 28. Nodes A.A. 2014/2015Tecniche di programmazione29  The Scene is populated with a tree of Nodes  Layout components  UI Controls  Charts  Shapes  Nodes have Properties  Visual (size, position, z-order, color, ...)  Contents (text, value, data sets, ...)  Programming (event handlers, controller)  Nodes generate Events  UI events  Nodes can be styled with CSS
  • 29. Events A.A. 2014/2015Tecniche di programmazione30  FX Event (javafx.event.Event):  Event Source => a Node  Event Target  Event Type  Usually generated after some user action  ActionEvent,TreeModificationEvent, InputEvent, ListView.E ditEvent, MediaErrorEvent,TableColumn.CellEditEvent,Tre eItem.TreeModificationEvent,TreeView.EditEvent,WebEve nt,WindowEvent,WorkerStateEvent  You can define event handlers in your application
  • 30. Properties A.A. 2014/2015Tecniche di programmazione31  Extension of the Java Beans convention  May be used also outside JavaFX  Encapsulate properties of an object  Different types (string, number, object, collection, ...)  Set/Get  Observe changes  Supports lazy evaluation  Each Node has a large set of Properties
  • 31. Bindings A.A. 2014/2015Tecniche di programmazione32  Automatically connect («bind») one Property to another Property  Whenever the source property changes, the bound one is automatically updated  Multiple bindings are supported  Lazy evaluation is supported  Bindings may also involve computations (arithmetic operators, if-then-else, string concatenation, ...) that are automatically evaluated  May be used to automate UI  May be used to connect the Model with theView
  • 33. Nodes A.A. 2014/2015Tecniche di programmazione34  Root node: top level container  Intermediate nodes:  Containers  Layout managers  UI Composite controls  Leaf (terminal) nodes:  Shapes  UI Controls  Organized as a Hierarchical tree
  • 34. Nodes family A.A. 2014/2015Tecniche di programmazione35 javafx.scene.Node Parent Control ChoiceBox ComboBoxBase ColorPicker ComboBox Labeled ButtonBase Button CheckBox MenuButton ToggleButton Cell Label TitledPane ListView MenuBar Slider TabPane TextInputControl TextArea TextField ToolBar TreeView Group Region Axis Chart Pane AnchorPane BorderPane FlowPane GridPane HBox StackPane TilePane VBox WebView Shape Arc Circle Line Polygon Rectangle Text Canvas Imageview JavaDoc is your friend Focus on Panes and Controls
  • 35. Exploring Controls and Examples A.A. 2014/2015Tecniche di programmazione36  JavaFX Ensemble demo application  Download from Oracle site: JavaFX Demos and Samples Downloads  Run Ensemble.jnlp
  • 36. UI Form Controls A.A. 2014/2015Tecniche di programmazione37  Controls may be combined to construct «Forms»  Control Nodes have a value property  May be linked to application code  Control Nodes generate UI Events  Button:ActionEvent  Text: ActionEvent, KeyTyped, KeyPressed, MouseClicked, ...
  • 37. A.A. 2014/2015Tecniche di programmazione38
  • 38. Layout Class Hierarchy A.A. 2014/2015Tecniche di programmazione39  Group:  Doesn’t perform any positioning of children.  To statically assemble a collection of nodes in fixed positions  To apply an effect or transform to that collection.  Region:  base class for all general purpose layout panes  resizable and stylable via CSS  Supports dynamic layout by sizing and positioning children  Control:  the base class for all skinnable controls  resizable and subclasses are all stylable via CSS  Controls delegate layout to their skins (which are Regions)  Each layout Control subclass provides API for adding content in the appropriate place within its skin  you do not add children to a control directly.
  • 39. A.A. 2014/2015Tecniche di programmazione40
  • 40. A.A. 2014/2015Tecniche di programmazione41
  • 41. A.A. 2014/2015Tecniche di programmazione42
  • 42. A.A. 2014/2015Tecniche di programmazione43
  • 43. A.A. 2014/2015Tecniche di programmazione44
  • 44. A.A. 2014/2015Tecniche di programmazione45
  • 45. A.A. 2014/2015Tecniche di programmazione46
  • 46. A.A. 2014/2015Tecniche di programmazione47
  • 47. Creating the Scene Graph A.A. 2014/2015Tecniche di programmazione48  The Java way  Create Control Nodes  Set properties to new nodes  Add new nodes to parent node  With Constructors and/or with Builders  The FXML way  Create a FXML file  Define Nodes and Properties in FXML  Load the FXML  (Optionally, add new nodes/properties the Java way)
  • 48. Example: one text input field A.A. 2014/2015Tecniche di programmazione49 TextField text = new TextField("Text"); text.setMaxSize(140, 20); root.getChildren().add(text); TextField text = TextFieldBuilder().create() .maxHeight(20).maxWidth(140) .text("Text") .build() ; root.getChildren().add(text); Constructors Builders
  • 49. A.A. 2014/2015Tecniche di programmazione50 public class HelloDevoxx extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) { primaryStage.setTitle("Hello Devoxx"); Group root = new Group(); Scene scene = new Scene(root, 400, 250, Color.ALICEBLUE); Text text = new Text(); text.setX(105); text.setY(120); text.setFont(new Font(30)); text.setText("Hello Devoxx"); root.getChildren().add(text); primaryStage.setScene(scene); primaryStage.show(); } }
  • 50. A.A. 2014/2015Tecniche di programmazione51 public void start(Stage primaryStage) { primaryStage.setTitle("Hello Devoxx"); primaryStage.setScene(SceneBuilder.create() .width(400).height(250).fill(Color.ALICEBLUE) .root(GroupBuilder.create().children( TextBuilder.create() .x(105).y(120) .text("Hello Devoxx") .font(new Font(30)).build() ).build() ).build()); primaryStage.show(); }
  • 51. The FXML way... A.A. 2014/2015Tecniche di programmazione52  XML-based format  Nested tree of XML Elements, corresponding to Nodes  XML Attributes corresponding to (initial) properties of nodes  JavaFX Scene Builder is a GUI for creating FXML files  The FXMLLoader class reads a FXML file and creates all the Nodes
  • 53. JavaFX Scene Builder A.A. 2014/2015Tecniche di programmazione54
  • 54. FXMLLoader A.A. 2014/2015Tecniche di programmazione55 @Override public void start(Stage stage) throws Exception { Parent root = FXMLLoader.load( getClass().getResource("fxml_example.fxml")); stage.setTitle("FXML Welcome"); stage.setScene(new Scene(root, 300, 275)); stage.show(); }
  • 55. Linking FXML and Java A.A. 2014/2015Tecniche di programmazione56  FXML element may have an associated attribute fx:id  Nodes may be later retrieved by  public Node lookup(java.lang.String selector)  Finds a node with a specified ID in the current sub-tree  Example:  scene.lookup("#myId");  Node references can also be «injected» using the @FXML annotation (see later)
  • 57. Interacting with Nodes A.A. 2014/2015Tecniche di programmazione58  In JavaFX applications, events are notifications that something has happened.  An event represents an occurrence of something of interest to the application  As a user clicks a button, presses a key, moves a mouse, or performs other actions, events are dispatched.  Registered event filters and event handlers within the application  receive the event and  provide a response.
  • 58. What is an event? A.A. 2014/2015Tecniche di programmazione59
  • 59. Event propagation A.A. 2014/2015Tecniche di programmazione60  Events are generated on the source node  Events propagated in the scene graph hierarchy («dispatch chain»), in two phases  Dispatching: downwards, from root to source node  Processes Event Filters registered in the nodes  Bubbling: upwards, from source node to root  Processes Event Handlers registered in the nodes  If you want an application to be notified when an event occurs, register a filter or a handler for the event  Handlers may “consume” the event
  • 60. Event Handlers A.A. 2014/2015Tecniche di programmazione61  Implements the EventHandler interface  Executed during the event bubbling phase.  If does not consume the event, it is propagated to the parent.  A node can register more than one handler.  Handlers for a specific event type are executed before handlers for generic event types.  For example, a handler for the KeyEvent.KEY_TYPED event is called before the handler for the InputEvent.ANY event.  To consume an event, call the consume() method
  • 61. Registering Event Handlers A.A. 2014/2015Tecniche di programmazione62  setOnEvent-type( EventHandler<? super event-class> value )  Event-Type  The type of event that the handler processes (e.g. setOnKeyTyped, setOnMouseClicked, ...)  Event-class  The class that defines the event type (e.g., KeyEvent , MouseEvent, ...)  Value  The event handler for event-class (or for one of its super classes)  Must implement: public void handle(ActionEvent event)  May be a regular class or an anonymous inline class
  • 62. Example A.A. 2014/2015Tecniche di programmazione63 class ButtonActionHandler implements javafx.event.EventHandler<ActionEvent> { public ButtonActionHandler (/*params*/) { // constructor - if needed } @Override public void handle(ActionEvent event) { Button b = (Button)event.getSource() ; //...do something String buttonText = b.getText() ; // ... } } Button btn = new Button() ; btn.setOnAction(new ButtonActionHandler()) ; Event Handler Registration
  • 63. Example (inline definition) A.A. 2014/2015Tecniche di programmazione64 btn.setOnAction(new EventHandler<ActionEvent>() { public void handle(ActionEvent event) { System.out.println("Hello World"); } }); Registration & Anonymous event handler
  • 65. Application complexity and MVC A.A. 2014/2015Tecniche di programmazione66  Interactive, graphical applications exhibit complex interaction patterns  Flow of control is in the hand of the user  Actions are mainly asynchronous  How to organize the program?  Where to store data?  How to decouple application logic from interface details?  How to keep in sync the inner data with the visibile interface?
  • 66. Media Player example A.A. 2014/2015Tecniche di programmazione67
  • 67. MVC pattern defined A.A. 2014/2015Tecniche di programmazione68
  • 68. Normal life-cycle of interaction A.A. 2014/2015Tecniche di programmazione69
  • 69. Mapping concepts to JavaFX A.A. 2014/2015Tecniche di programmazione70  View: presenting the UI  FXML  The Nodes in the Scene Graph  Controller: reacting to user actions  Set of event handlers  Model: handling the data  Class(es) including data  Persistent data in Data Bases
  • 70. Design Exercise A.A. 2014/2015Tecniche di programmazione71  Imagine an application managing a list of items (e.g., names)  Different items in the user interface should manage the same set of data, with different criteria and actions  Where do you declare the data class?  Which class should have access to which?  Who creates what objects?
  • 71. A.A. 2014/2015Tecniche di programmazione72 A possible solution
  • 72. The Controller in FXML JavaFX programming
  • 73. The Controller in FXML A.A. 2014/2015Tecniche di programmazione74  Several attributes in FXML help in the definition of the Controller behavior associated to a scene  Identification of the Controller class  Injection of Node identifiers (references)  Registration of event handlers  Additionally, the JavaFX Scene Builder may generate a «controller skeleton» for inclusion in the project
  • 74. Defining the Controller class A.A. 2014/2015Tecniche di programmazione75  The Root element of the scene graph may specify a fx: controller attribute  <BorderPane id="BorderPane" xmlns:fx="http://javafx.com /fxml" fx:controller="it.polito.te cnprogr.RuzzleController">
  • 75. fx:controller attribute A.A. 2014/2015Tecniche di programmazione76  Associate a "controller" class with an FXML document  Automatically create the instance when FXML is loaded  Should include event handler methods  May include an initialize() method  public void initialize();  called once when the contents of its associated document have been completely loaded  any necessary post-processing on the content
  • 76. Accessing the controller instance A.A. 2014/2015Tecniche di programmazione77  The Application often needs to communicate with the controller object  E.g., to call setModel()  FXMLLoader provides this information URL location = getClass().getResource("example.fxml"); FXMLLoader fxmlLoader = new FXMLLoader(location); Pane root = (Pane)fxmlLoader.load(); MyController controller = (MyController)fxmlLoader.getController();
  • 77. Injection of Node references A.A. 2014/2015Tecniche di programmazione78  The controller code may directly access various Nodes in the associated scene graph  The attribute @FXML associates a Node variable with the corresponding node, with the same fx:id value as the variable name  No more error-prone «lookup» calls...  Local variables in the controller instance  Try:View | Show Sample Controller Skeleton on the Scene Builder! @FXML // fx:id="theTitle" private Label theTitle;
  • 78. Registration of Event Handlers A.A. 2014/2015Tecniche di programmazione79  In FXML, you may set a event handler through attributes  onAction, onKeyTyped, onMouseClicked, ... hundreds more ...  The value should be the #name of a method in the controller class  With the right signature for the event type <Button fx:id="cercaBtn" onAction="#doCercaParola" text="Cerca" /> @FXML void doCercaParola ( ActionEvent event ) {
  • 80. Resources A.A. 2014/2015Tecniche di programmazione84  Official  http://www.oracle.com/us/technologies/java/fx/overview/index. html  http://www.oracle.com/technetwork/java/javafx/overview/index .html  Documents  http://docs.oracle.com/javafx/  http://docs.oracle.com/javafx/2/api/index.html  Blogs  http://fxexperience.com/  http://www.learnjavafx.typepad.com/weblog/  http://community.java.net/community/javafx
  • 81. Resources A.A. 2014/2015Tecniche di programmazione85  API  http://docs.oracle.com/javafx/2/api/index.html  Slides/Tips  http://www.slideshare.net/steveonjava/java-fx-20-a-developers-guide  http://refcardz.dzone.com/refcardz/getting-started-javafx  Tutorials/Articles  http://docs.oracle.com/javafx/2/events/jfxpub-events.htm  http://amyfowlersblog.wordpress.com/2011/06/02/javafx2-0-layout-a- class-tour/  Examples (Downloads)  JavaFX Demos and Samples, at http://www.oracle.com/technetwork/java/javase/downloads/jdk7- downloads-1880260.html
  • 82. Resources A.A. 2014/2015Tecniche di programmazione86  FXML Controller  http://docs.oracle.com/javafx/2/api/javafx/fxml/doc- files/introduction_to_fxml.html#controllers  Charts  Using JavaFX Charts tutorial: http://docs.oracle.com/javafx/2/charts/jfxpub-charts.htm  Books  Head First Design Patterns, chapter 12
  • 83. Resources A.A. 2014/2015Tecniche di programmazione87  Properties and Bindings  http://docs.oracle.com/javafx/2/binding/jfxpub-binding.htm  http://thierrywasyl.wordpress.com/2012/07/29/properties-and- bindings-in-javafx/
  • 84. Licenza d’uso A.A. 2014/2015Tecniche di programmazione88  Queste diapositive sono distribuite con licenza Creative Commons “Attribuzione - Non commerciale - Condividi allo stesso modo (CC BY-NC-SA)”  Sei libero:  di riprodurre, distribuire, comunicare al pubblico, esporre in pubblico, rappresentare, eseguire e recitare quest'opera  di modificare quest'opera  Alle seguenti condizioni:  Attribuzione — Devi attribuire la paternità dell'opera agli autori originali e in modo tale da non suggerire che essi avallino te o il modo in cui tu usi l'opera.  Non commerciale — Non puoi usare quest'opera per fini commerciali.  Condividi allo stesso modo — Se alteri o trasformi quest'opera, o se la usi per crearne un'altra, puoi distribuire l'opera risultante solo con una licenza identica o equivalente a questa.  http://creativecommons.org/licenses/by-nc-sa/3.0/