Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

JavaFX programming


Published on

Basic JavaFX programming patterns.

The Controller in FXML

Teaching material for the course of "Tecniche di Programmazione" at Politecnico di Torino in year 2012/2013. More information:

  • Be the first to comment

JavaFX programming

  1. 1. JavaFX programmingTecniche di Programmazione – A.A. 2012/2013
  2. 2. Summary1. Model-View-Controller2. The Controller in FXML3. Charts 2 Tecniche di programmazione A.A. 2012/2013
  3. 3. Model-View-Controller JavaFX programming
  4. 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. 5. Media Player example5 Tecniche di programmazione A.A. 2012/2013
  6. 6. MVC pattern defined6 Tecniche di programmazione A.A. 2012/2013
  7. 7. Normal life-cycle of interaction7 Tecniche di programmazione A.A. 2012/2013
  8. 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. 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. 10. A possiblesolution10 Tecniche di programmazione A.A. 2012/2013
  11. 11. The Controller in FXML JavaFX programming
  12. 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. 13. Defining the Controller class The Root element of the scene graph may specify a fx: controller attribute  <BorderPane id="BorderPane" xmlns:fx=" /fxml" fx:controller="it.polito.te cnprogr.RuzzleController"> 13 Tecniche di programmazione A.A. 2012/2013
  14. 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. 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. 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. 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" @FXMLonAction="#doCercaParola" void doCercaParola (text="Cerca" /> ActionEvent event ) { 17 Tecniche di programmazione A.A. 2012/2013
  18. 18. ResourcesJavaFX programming
  19. 19. Resources API  FXML Controller  files/introduction_to_fxml.html#controllers Books  Head First Design Patterns, chapter 12 21 Tecniche di programmazione A.A. 2012/2013
  20. 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 questopera  di modificare questopera Alle seguenti condizioni:  Attribuzione — Devi attribuire la paternità dellopera agli autori originali e in modo tale da non suggerire che essi avallino te o il modo in cui tu usi lopera.  Non commerciale — Non puoi usare questopera per fini commerciali.  Condividi allo stesso modo — Se alteri o trasformi questopera, o se la usi per crearne unaltra, puoi distribuire lopera risultante solo con una licenza identica o equivalente a questa. 22 Tecniche di programmazione A.A. 2012/2013