Ce chapitre est important car il présente les classes de bases communes aux applications JavaFX.
Un exemple illustre ce chapitre, complété au fur et à mesure des notions introduites dans les sections du chapitre.
Application.
Application est le nom de la classe Abstraite à implémenter par la sous-classe représentant l'application JavaFX.
Cette sous-classe ne comporte pas obligatoirement une méthode statique codice_1 car la JVM peut lancer directement un JAR contenant une application JavaFX en utilisant certains attributs particuliers du fichier de manifeste.
Elle suit un cycle particulier :
Récupération des arguments de la ligne de commande.
Quel que soit le mode de lancement de l'application, la méthode codice_9 de la classe Application retourne un objet de classe codice_10 :
Parameters params = getParameters();
Les méthodes de la classe codice_10 permettent de récupérer les arguments de la ligne de commande :
Exemple.
package org.wikibooks.fr.javafx;
import java.util.*;
import javafx.application.Application;
import javafx.stage.Stage;
public class FirstExample extends Application
 public static void main(String[] args)
 Application.launch(args);
 @Override
 public void start(Stage stage)
 Group root = new Group();
 Scene scene = new Scene(root, 400, 200); // Fenêtre 400x200 pixels
 stage.setScene(scene);
 stage.setTitle("Exemple de scene vide"); // Titre de la fenêtre
 stage.show();
 // Afficher tous les arguments passés à l'application
 // Exemple: test --limit=20 example --out=file.dat
 // Paramètre limit = 20
 // Paramètre out = file.dat
 // Autre paramètre: test
 // Autre paramètre: example
 Parameters params = getParameters();
 for(Map.Entry<String, String> named_parameter : params.getNamed().entrySet())
 System.out.println(" Paramètre "+named_parameter.getKey()+" = "+named_parameter.getValue());
 for(String p : params.getUnnamed())
 System.out.println(" Autre paramètre: "+p);
Stage.
Une instance de la classe codice_15 représente une fenêtre d'application JavaFX.
Les principales méthodes sont les suivantes:
Il est également possible d'ajouter une ou plusieurs icônes en modifiant la liste observable retournée par la méthode codice_19.
Liste observable.
Une liste observable est une liste générique dont les modifications sont notifiés aux instances des classes implémentant l'interface ListChangeListener enregistrées sur la liste par la méthode codice_20.
Les listes observables sont très utilisées dans l'API JavaFX.
Scene.
Une scène est composée de nœuds (Node).
Une scène comporte des nœuds 2D (composants : boutons, labels...) ou 3D (formes : sphères, boîtes, cylindres...).
package org.wikibooks.fr.javafx;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.PerspectiveCamera;
import javafx.scene.PointLight;
import javafx.scene.Scene;
import javafx.scene.shape.Box;
import javafx.scene.shape.Cylinder;
import javafx.scene.shape.Sphere;
import javafx.stage.Stage;
public class First3DScene extends Application
 public static void main(String[] args)
 Application.launch(args);
 @Override
 public void start(Stage stage)
 // Create a Box
 Box box = new Box(100, 100, 100);
 box.setTranslateX(150);
 box.setTranslateY(0);
 box.setTranslateZ(400);
 // Create a Sphere
 Sphere sphere = new Sphere(50);
 sphere.setTranslateX(300);
 sphere.setTranslateY(-5);
 sphere.setTranslateZ(400);
 // Create a Cylinder
 Cylinder cylinder = new Cylinder(40, 120);
 cylinder.setTranslateX(500);
 cylinder.setTranslateY(-25);
 cylinder.setTranslateZ(600);
 // Create a Light
 PointLight light = new PointLight();
 light.setTranslateX(350);
 light.setTranslateY(100);
 light.setTranslateZ(300);
 // Create a Camera to view the 3D Shapes
 PerspectiveCamera camera = new PerspectiveCamera(false);
 camera.setTranslateX(100);
 camera.setTranslateY(-50);
 camera.setTranslateZ(300);
 // Add the Shapes and the Light to the Group
 Group root = new Group(box, sphere, cylinder, light);
 // Create a Scene with depth buffer enabled
 Scene scene = new Scene(root, 400, 200, true);
 // Add the Camera to the Scene
 scene.setCamera(camera);
 // Add the Scene to the Stage
 stage.setScene(scene);
 // Set the Title of the Stage
 stage.setTitle("An Example with Predefined 3D Shapes");
 // Display the Stage
 stage.show();
Classes similaires à AWT et Swing.
JavaFX a été conçu pour remplacer Swing et AWT à long terme.
Le framework est donc indépendant et possède des classes spécifiques, nommées comme celles de Swing et AWT et jouant à peu près le même rôle mais sont différentes.
Ce qui veut dire qu'il n'est pas possible d'utiliser directement les classes de JavaFX en Swing/AWT et vice-versa.
La spécificité des classes de JavaFX permet leur utilisation en 2D et en 3D.
Nœud (Node).
Un nœud représenté un élément affichable dans une scène.
Certaines classes d'objet ne sont pas des nœuds ; leurs instances doivent alors être encapsulées dans une vue (View) gérant le type d'objet :
Exemple : afficher une image.
package org.wikibooks.fr.javafx;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class ShowImage extends Application
 public static void main(String[] args)
 Application.launch(args);
 @Override
 public void start(Stage stage)
 StackPane sp = new StackPane();
 Image im = new Image("image.jpg"); // Chemin local relatif
 // Image im = new Image("file://///E:/Images/image_8.jpg"); // ou chemin local absolu : URL
 // Image im = new Image(getClass().getResourceAsStream("logo.png")); // ou resource du package
 // Image im = new Image("http://www.monserveur.com/images/example.png"); // ou URL internet
 ImageView im_view = new ImageView(im);
 sp.getChildren().add(im_view);
 Scene scene = new Scene(sp);
 stage.setScene(scene);
 stage.setTitle("Afficher une image");
 stage.show();

Photographie/Personnalités/L/Brodrene Larm

Biographie.
Brodrene Larm était un studio photographique tenu par les deux frères jumeaux Benjamin Larm (1858 - 1927) et Josef Larm (1858 - 1939). Le studio a été actif de 1886 à 1916.

Programmation JavaFX/Classes 2D
Hiérarchie des classes 2D.
La hiérarchie de classes ci-dessous montrent les classes communes aux application 2D et 3D, vues précédemment et les classes spécifiques à la 2D.

Programmation JavaFX/Scene Builder
Scene Builder est un outil interactif de conception d'interface graphique pour JavaFX.
Il permet de créer des interfaces utilisateurs rapidement et sans avoir besoin de coder ; il en résulte des fichiers au format FXML qui sont ensuite chargés par le programme pour afficher une interface graphique à l'utilisateur.
Développé initialement par Oracle et sous le nom JavaFX Scene Builder, son code source a été publié en open source à partir de sa version 2.0.
Depuis, le logiciel est principalement développé et soutenu par la société Gluon.
Utilisation.
Le logiciel s'utilise avec la technique du glisser/déposer : un panneau latéral situé à gauche de la fenêtre permet à l'utilisateur de sélectionner et positionner un composant dans la hiérarchie des composants ou sur la vue centrale affichant le rendu.
Un panneau latéral positionné à droite de la fenêtre permet quant à lui de définir les caractéristiques du composant sélectionné par l'utilisateur.
Les interfaces sont enregistrées dans des fichiers au format FXML, qui sont ensuite lus et chargés en mémoire par le programme, puis affichés à l'écran.
FXML.
FXML est un format de données textuel, dérivé du format XML, qui permet de décrire une interface utilisateur pour des applications conçues avec JavaFX.
Il s'agit d'une alternative à la conception d'interfaces réalisée par l'écriture de lignes de codes, en découplant l'interface graphique du code source qui le contrôle.
Cette technologie a été intégrée dans JavaFX à partir de sa version 2.0, pour remplacer JavaFX Script.