SlideShare a Scribd company logo
1 of 20
Download to read offline
JavaFX programming

Tecniche di Programmazione – A.A. 2012/2013
Summary
1.   Model-View-Controller
2.   The Controller in FXML
3.   Charts




 2                        Tecniche di programmazione   A.A. 2012/2013
Model-View-Controller

        JavaFX programming
Application complexity and MVC
       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?

    4                             Tecniche di programmazione   A.A. 2012/2013
Media Player example




5                Tecniche di programmazione   A.A. 2012/2013
MVC pattern defined




6                Tecniche di programmazione   A.A. 2012/2013
Normal life-cycle of interaction




7                  Tecniche di programmazione   A.A. 2012/2013
Mapping concepts to JavaFX
       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




    8                                 Tecniche di programmazione   A.A. 2012/2013
Design Exercise
       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?




    9                            Tecniche di programmazione   A.A. 2012/2013
A possible
solution




10           Tecniche di programmazione   A.A. 2012/2013
The Controller in FXML

         JavaFX programming
The Controller in FXML
    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




    12                              Tecniche di programmazione   A.A. 2012/2013
Defining the Controller class
    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">




    13                      Tecniche di programmazione   A.A. 2012/2013
fx:controller attribute
    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




    14                            Tecniche di programmazione   A.A. 2012/2013
Accessing the controller instance
    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();



    15                              Tecniche di programmazione   A.A. 2012/2013
Injection of Node references
    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;

    16                              Tecniche di programmazione   A.A. 2012/2013
Registration of Event Handlers
     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"                       @FXML
onAction="#doCercaParola"                      void doCercaParola (
text="Cerca" />                                ActionEvent event ) {
     17                             Tecniche di programmazione   A.A. 2012/2013
Resources

JavaFX programming
Resources
    API
        http://docs.oracle.com/javafx/2/api/index.html
    FXML Controller
        http://docs.oracle.com/javafx/2/api/javafx/fxml/doc-
         files/introduction_to_fxml.html#controllers
    Books
        Head First Design Patterns, chapter 12




    21                              Tecniche di programmazione   A.A. 2012/2013
Licenza d’uso
    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/
    22                                   Tecniche di programmazione   A.A. 2012/2013

More Related Content

Viewers also liked

Viewers also liked (17)

Strumenti e metodi per la preparazione dei contenuti in e-learning
 Strumenti e metodi per la preparazione dei contenuti in e-learning Strumenti e metodi per la preparazione dei contenuti in e-learning
Strumenti e metodi per la preparazione dei contenuti in e-learning
 
Introduction to Semantic Web, Metadata, Knowledge Representation, Ontologies
Introduction to Semantic Web, Metadata, Knowledge Representation, OntologiesIntroduction to Semantic Web, Metadata, Knowledge Representation, Ontologies
Introduction to Semantic Web, Metadata, Knowledge Representation, Ontologies
 
Web Architecture and Technologies
Web Architecture and TechnologiesWeb Architecture and Technologies
Web Architecture and Technologies
 
Ambient Intelligence - Course Introduction
Ambient Intelligence - Course IntroductionAmbient Intelligence - Course Introduction
Ambient Intelligence - Course Introduction
 
Introduction to JSP pages
Introduction to JSP pagesIntroduction to JSP pages
Introduction to JSP pages
 
Presentazione Laurea Magistrale in Ingegneria Informatica del Politecnico di ...
Presentazione Laurea Magistrale in Ingegneria Informatica del Politecnico di ...Presentazione Laurea Magistrale in Ingegneria Informatica del Politecnico di ...
Presentazione Laurea Magistrale in Ingegneria Informatica del Politecnico di ...
 
E-learning e teorie sull'apprendimento
 E-learning e teorie sull'apprendimento E-learning e teorie sull'apprendimento
E-learning e teorie sull'apprendimento
 
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
 
Ambient Intelligence Design Process
Ambient Intelligence Design ProcessAmbient Intelligence Design Process
Ambient Intelligence Design Process
 
Definition of Ambient Intelligence
Definition of Ambient IntelligenceDefinition of Ambient Intelligence
Definition of Ambient Intelligence
 
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
 
AmI 2015 - Design Process
AmI 2015 - Design ProcessAmI 2015 - Design Process
AmI 2015 - Design Process
 
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
 
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
 
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
 
Designing the User Experience
Designing the User ExperienceDesigning the User Experience
Designing the User Experience
 
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
 

Similar to JavaFX programming

Stephen Kennedy Silverlight 3 Deep Dive
Stephen Kennedy Silverlight 3 Deep DiveStephen Kennedy Silverlight 3 Deep Dive
Stephen Kennedy Silverlight 3 Deep Dive
MicrosoftFeed
 
.NET Portfolio
.NET Portfolio.NET Portfolio
.NET Portfolio
mwillmer
 

Similar to JavaFX programming (20)

Programming with JavaFX
Programming with JavaFXProgramming with JavaFX
Programming with JavaFX
 
JSUG - Filthy Flex by Christoph Pickl
JSUG - Filthy Flex by Christoph PicklJSUG - Filthy Flex by Christoph Pickl
JSUG - Filthy Flex by Christoph Pickl
 
27 - Panorama Necto 14 component mode & java script - visualization & data di...
27 - Panorama Necto 14 component mode & java script - visualization & data di...27 - Panorama Necto 14 component mode & java script - visualization & data di...
27 - Panorama Necto 14 component mode & java script - visualization & data di...
 
Programming with JavaFX
Programming with JavaFXProgramming with JavaFX
Programming with JavaFX
 
Client Side MVC & Angular
Client Side MVC & AngularClient Side MVC & Angular
Client Side MVC & Angular
 
Design Patterns in Cocoa Touch
Design Patterns in Cocoa TouchDesign Patterns in Cocoa Touch
Design Patterns in Cocoa Touch
 
Stephen Kennedy Silverlight 3 Deep Dive
Stephen Kennedy Silverlight 3 Deep DiveStephen Kennedy Silverlight 3 Deep Dive
Stephen Kennedy Silverlight 3 Deep Dive
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applications
 
Necto 16 training 20 component mode &amp; java script
Necto 16 training 20   component mode &amp; java scriptNecto 16 training 20   component mode &amp; java script
Necto 16 training 20 component mode &amp; java script
 
MVC Pattern. Flex implementation of MVC
MVC Pattern. Flex implementation of MVCMVC Pattern. Flex implementation of MVC
MVC Pattern. Flex implementation of MVC
 
Effective JavaFX architecture with FxObjects
Effective JavaFX architecture with FxObjectsEffective JavaFX architecture with FxObjects
Effective JavaFX architecture with FxObjects
 
Getting start Java EE Action-Based MVC with Thymeleaf
Getting start Java EE Action-Based MVC with ThymeleafGetting start Java EE Action-Based MVC with Thymeleaf
Getting start Java EE Action-Based MVC with Thymeleaf
 
react-en.pdf
react-en.pdfreact-en.pdf
react-en.pdf
 
XPages Blast - ILUG 2010
XPages Blast - ILUG 2010XPages Blast - ILUG 2010
XPages Blast - ILUG 2010
 
Angular js
Angular jsAngular js
Angular js
 
Principles of MVC for Rails Developers
Principles of MVC for Rails DevelopersPrinciples of MVC for Rails Developers
Principles of MVC for Rails Developers
 
Java script best practices v4
Java script best practices v4Java script best practices v4
Java script best practices v4
 
Training On Angular Js
Training On Angular JsTraining On Angular Js
Training On Angular Js
 
Angular js
Angular jsAngular js
Angular js
 
.NET Portfolio
.NET Portfolio.NET Portfolio
.NET Portfolio
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Recently uploaded (20)

Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 

JavaFX programming

  • 1. JavaFX programming Tecniche di Programmazione – A.A. 2012/2013
  • 2. Summary 1. Model-View-Controller 2. The Controller in FXML 3. Charts 2 Tecniche di programmazione A.A. 2012/2013
  • 3. Model-View-Controller JavaFX programming
  • 4. Application complexity and MVC  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? 4 Tecniche di programmazione A.A. 2012/2013
  • 5. Media Player example 5 Tecniche di programmazione A.A. 2012/2013
  • 6. MVC pattern defined 6 Tecniche di programmazione A.A. 2012/2013
  • 7. Normal life-cycle of interaction 7 Tecniche di programmazione A.A. 2012/2013
  • 8. Mapping concepts to JavaFX  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 8 Tecniche di programmazione A.A. 2012/2013
  • 9. Design Exercise  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? 9 Tecniche di programmazione A.A. 2012/2013
  • 10. A possible solution 10 Tecniche di programmazione A.A. 2012/2013
  • 11. The Controller in FXML JavaFX programming
  • 12. The Controller in FXML  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 12 Tecniche di programmazione A.A. 2012/2013
  • 13. Defining the Controller class  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"> 13 Tecniche di programmazione A.A. 2012/2013
  • 14. fx:controller attribute  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 14 Tecniche di programmazione A.A. 2012/2013
  • 15. Accessing the controller instance  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(); 15 Tecniche di programmazione A.A. 2012/2013
  • 16. Injection of Node references  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; 16 Tecniche di programmazione A.A. 2012/2013
  • 17. Registration of Event Handlers  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" @FXML onAction="#doCercaParola" void doCercaParola ( text="Cerca" /> ActionEvent event ) { 17 Tecniche di programmazione A.A. 2012/2013
  • 19. Resources  API  http://docs.oracle.com/javafx/2/api/index.html  FXML Controller  http://docs.oracle.com/javafx/2/api/javafx/fxml/doc- files/introduction_to_fxml.html#controllers  Books  Head First Design Patterns, chapter 12 21 Tecniche di programmazione A.A. 2012/2013
  • 20. Licenza d’uso  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/ 22 Tecniche di programmazione A.A. 2012/2013