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

  1. 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.

  2. 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.

  3. Double-cliquez sur l'icône Scene Builder pour l'exécuter en tant qu'application autonome.

  4. 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. Chemin de création de scène - NetBeans
    • 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. Chemin de création de scène - IntelliJ
    • 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. Chemin de créateur de scène - Eclipse

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:

Les tutoriels FXML peuvent être trouvés ici.

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).

Gestionnaire de bibliothèque

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:

Exécuter le projet

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: Icône de créateur de scène

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 .

Modifier le fichier avec 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:

FXML édité avec Scene Builder

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 :

Réglage fx: id

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.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow