javafx
Créateur de scène
Recherche…
Introduction
JavaFX Scene Builder est un outil de présentation visuelle qui permet aux utilisateurs de concevoir rapidement des interfaces utilisateur d'application JavaFX, sans codage. Il est utilisé pour générer des fichiers FXML.
Remarques
JavaFX Scene Builder est un outil de présentation visuelle qui permet aux utilisateurs de concevoir rapidement des interfaces utilisateur d'application JavaFX, sans codage. Les utilisateurs peuvent faire glisser et déposer les composants de l'interface utilisateur dans une zone de travail, modifier leurs propriétés, appliquer des feuilles de style et le code FXML de la mise en page qu'ils créent est automatiquement généré en arrière-plan. Le résultat est un fichier FXML qui peut ensuite être combiné avec un projet Java en liant l'interface utilisateur à la logique de l'application.
Dans une perspective MVC (Model View Controller):
- Le fichier FXML, contenant la description de l'interface utilisateur, est la vue.
- Le contrôleur est une classe Java, implémentant éventuellement la classe Initializable, qui est déclarée en tant que contrôleur pour le fichier FXML.
- Le modèle se compose d'objets de domaine, définis du côté Java, pouvant être connectés à la vue via le contrôleur.
Installation du créateur de scène
Téléchargez la version la plus récente de Scene Builder sur le site Web de Gluon, en sélectionnant le programme d'installation correspondant à votre plate-forme ou à l'exécutable.
Une fois le programme d'installation téléchargé, double-cliquez pour installer Scene Builder sur votre système. Un JRE mis à jour est inclus.
Double-cliquez sur l'icône Scene Builder pour l'exécuter en tant qu'application autonome.
Intégration IDE
Bien que Scene Builder soit une application autonome, il produit des fichiers FXML intégrés à un projet Java SE. Lors de la création de ce projet sur un IDE, il est pratique d'inclure un lien vers le chemin du Générateur de scènes, afin que les fichiers FXML puissent être édités.
- NetBeans: Sous Windows, accédez à NetBeans-> Tools-> Options-> Java-> JavaFX. Sous Mac OS X, accédez à NetBeans-> Preferences-> Java-> JavaFX. Indiquez le chemin d'accès à la maison Scene Builder.
- IntelliJ: Sous Windows, accédez à IntelliJ-> Paramètres-> Langues et cadres-> JavaFX. Sous Mac OS X, accédez à IntelliJ-> Preferences-> Languages & Frameworks-> JavaFX. Indiquez le chemin d'accès à la maison Scene Builder.
- Eclipse: Sous Windows, accédez à Eclipse-> Window-> Preferences-> JavaFX. Sous Mac OS X, accédez à Eclipse-> Preferences-> JavaFX. Indiquez le chemin d'accès à la maison Scene Builder.
Un peu d'histoire
Le projet Scene Builder a été créé à l'aide de JavaFX par Oracle et est open source dans le projet OpenJFX.
Oracle a fourni des fichiers binaires, jusqu’à Scene Builder v 2.0, incluant uniquement des fonctionnalités JavaFX avant la sortie de Java SE 8u40. De nouvelles fonctionnalités telles que les contrôles Spinner
ne sont donc pas incluses.
Gluon a repris la distribution des versions binaires, et un Scene Builder 8+ mis à jour peut être téléchargé pour chaque plate-forme à partir d' ici .
Il inclut les dernières modifications de JavaFX, ainsi que les améliorations récentes et les corrections de bogues.
Le projet open source peut être trouvé ici où des problèmes, des demandes de fonctionnalités et des requêtes d'extraction peuvent être créés.
Les anciens binaires Oracle peuvent toujours être téléchargés ici .
Des tutoriels
Vous trouverez des tutoriels sur Scene Builder ici:
- Tutoriel Oracle Scene Builder 2.0
Les tutoriels FXML peuvent être trouvés ici.
- Oracle FXML tutoriel
Contrôles personnalisés
Gluon a entièrement documenté la nouvelle fonctionnalité qui permet d'importer des fichiers jar tiers avec des contrôles personnalisés, à l'aide du gestionnaire de bibliothèque (disponible depuis Scene Builder 8.2.0).
SO questions
Tag lié: SceneBuilder
Projet JavaFX de base utilisant FXML
C'est un projet de base qui utilise FXML, créé avec NetBeans (Nouveau projet -> JavaFX -> Application JavaFX FXML). Il ne contient que trois fichiers:
Classe d'application principale
package org.stackoverflow;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class BasicApplication extends Application {
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("BasicFXML.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Fichier FXML
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<AnchorPane id="AnchorPane" prefHeight="200" prefWidth="320" xmlns:fx="http://javafx.com/fxml/1" fx:controller="org.stackoverflow.BasicFXMLController">
<children>
<Button layoutX="126" layoutY="90" text="Click Me!" onAction="#handleButtonAction" fx:id="button" />
<Label layoutX="126" layoutY="120" minHeight="16" minWidth="69" fx:id="label" />
</children>
</AnchorPane>
Manette
package org.stackoverflow;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
public class BasicFXMLController {
@FXML
private Label label;
public void initialize() {
// TODO
}
@FXML
private void handleButtonAction(ActionEvent event) {
label.setText("Hello World!");
}
}
Courir
Construire et exécuter le projet devrait afficher une petite fenêtre avec un bouton cliquable:
Comment ça marche
En bref, dans la classe Application principale, FXMLLoader chargera basicFXML.fxml
partir du basicFXML.fxml
jar / classpath, comme spécifié par FXMLLoader.load(getClass().getResource("BasicFXML.fxml"))
.
Lors du chargement de basicFXML.fxml
, le chargeur trouvera le nom de la classe du contrôleur, comme spécifié par fx:controller="org.stackoverflow.BasicFXMLController"
dans le fichier FXML.
Ensuite, le chargeur créera une instance de cette classe, dans laquelle il tentera d'injecter tous les objets ayant un fx:id
dans le fichier FXML et qui seront marqués avec l'annotation @FXML
dans la classe du contrôleur.
Dans cet exemple, le FXMLLoader créera le libellé basé sur <Label ... fx:id="label"/>
et injectera l'occurrence de l'étiquette dans le @FXML private Label label;
.
Enfin, lorsque l’ensemble du fichier FXML a été chargé, le FXMLLoader appelle la méthode d’ initialize
du contrôleur et le code qui enregistre un gestionnaire d’action avec le bouton est exécuté.
Édition
Bien que le fichier FXML puisse être modifié dans l'EDI, il n'est pas recommandé, car l'EDI ne fournit qu'une vérification de base de la syntaxe et une auto-complétion, mais pas de guidage visuel.
La meilleure approche consiste à ouvrir le fichier FXML avec Scene Builder, où toutes les modifications seront enregistrées dans le fichier.
Scene Builder peut être lancé pour ouvrir le fichier:
Ou le fichier peut être ouvert avec Scene Builder directement depuis l'EDI:
- Dans NetBeans, dans l'onglet Projet, double-cliquez sur le fichier ou cliquez avec le bouton droit de la souris et sélectionnez
Open
. - Dans IntelliJ, dans l'onglet Projet, cliquez avec le bouton droit sur le fichier et sélectionnez
Open In Scene Builder
. - Dans Eclipse, dans l'onglet Projet, cliquez avec le bouton droit sur le fichier et sélectionnez
Open with Scene Builder
.
Si Scene Builder est correctement installé et que son chemin d'accès est ajouté à l'EDI (voir Remarques ci-dessous), il ouvre le fichier:
Vous pouvez apporter des modifications en faisant glisser de nouveaux conteneurs ou de nouveaux contrôles à partir des volets de gauche. Les propriétés et les valeurs de disposition peuvent être modifiées dans les volets de droite.
Notez que l'un des tags d'ID permettant d'injecter le FXML dans le code Java est fx:id
. Il peut être défini dans le volet Code
:
Après avoir appliqué les modifications, enregistrez le fichier (Scene Builder -> Fichier -> Enregistrer). Si des modifications sont apportées à la modification du fichier depuis l'EDI, lors de l'enregistrement du fichier, celles-ci seront mises à jour sur Scene Builder.