Ricerca…


introduzione

JavaFX Scene Builder è uno strumento di layout visivo che consente agli utenti di progettare rapidamente interfacce utente di applicazioni JavaFX, senza codifica. È usato per generare file FXML.

Osservazioni

JavaFX Scene Builder è uno strumento di layout visivo che consente agli utenti di progettare rapidamente interfacce utente di applicazioni JavaFX, senza codifica. Gli utenti possono trascinare i componenti dell'interfaccia utente su un'area di lavoro, modificarne le proprietà, applicare i fogli di stile e il codice FXML per il layout che stanno creando viene generato automaticamente in background. Il risultato è un file FXML che può quindi essere combinato con un progetto Java vincolando l'interfaccia utente alla logica dell'applicazione.

Da una prospettiva Model View Controller (MVC):

  • Il file FXML, contenente la descrizione dell'interfaccia utente, è la vista.
  • Il controller è una classe Java, che implementa facoltativamente la classe Initializable, che viene dichiarata come controller per il file FXML.
  • Il modello è costituito da oggetti di dominio, definiti sul lato Java, che possono essere collegati alla vista attraverso il controller.

Installazione di Scene Builder

  1. Scarica la versione più recente di Scene Builder dal sito Web di Gluon, selezionando l'installer per la tua piattaforma o il jar eseguibile.

  2. Con il programma di installazione scaricato, fai doppio clic per installare Scene Builder sul tuo sistema. È incluso un JRE aggiornato.

  3. Fare doppio clic sull'icona di Scene Builder per eseguirlo come applicazione autonoma.

  4. Integrazione IDE

    Mentre Scene Builder è un'applicazione standalone, produce file FXML che sono integrati con un progetto Java SE. Quando si crea questo progetto su un IDE, è utile includere un collegamento al percorso di Scene Builder, in modo che i file FXML possano essere modificati.

    • NetBeans: in Windows vai a NetBeans-> Strumenti-> Opzioni-> Java-> JavaFX. Su Mac OS X vai su NetBeans-> Preferenze-> Java-> JavaFX. Fornire il percorso per la Home page di Scene Builder. Percorso del generatore di scene - NetBeans
    • IntelliJ: Su Windows vai su IntelliJ-> Impostazioni-> Lingue e quadri-> JavaFX. Su Mac OS X vai su IntelliJ-> Preferenze-> Lingue e quadri-> JavaFX. Fornire il percorso per la Home page di Scene Builder. Percorso del generatore di scene - IntelliJ
    • Eclipse: su Windows vai su Eclipse-> Finestra-> Preferenze-> JavaFX. Su Mac OS X vai su Eclipse-> Preferenze-> JavaFX. Fornire il percorso per la Home page di Scene Builder. Percorso del generatore di scene - Eclipse

Un po 'di storia

Il progetto Scene Builder è stato creato utilizzando JavaFX da Oracle ed è open source all'interno del progetto OpenJFX.

Oracle ha fornito i binari, fino a Scene Builder v 2.0, incluse solo le funzionalità JavaFX prima del rilascio di Java SE 8u40, quindi le nuove funzionalità come i controlli Spinner non sono incluse.

Gluon ha acquisito la distribuzione di versioni binarie e da qui è possibile scaricare uno Scene Builder 8+ aggiornato per ogni piattaforma.

Include le ultime modifiche in JavaFX e anche miglioramenti recenti e correzioni di errori.

Il progetto open source può essere trovato qui dove è possibile creare problemi, richieste di funzionalità e richieste di pull.

I binari legacy Oracle possono ancora essere scaricati da qui .

Esercitazioni

I tutorial di Scene Builder sono disponibili qui:

Le esercitazioni FXML possono essere trovate qui.

Controlli personalizzati

Gluon ha pienamente documentato la nuova funzionalità che consente di importare giare di terze parti con controlli personalizzati, utilizzando il Gestore libreria (disponibile da Scene Builder 8.2.0).

Gestore della biblioteca

QUINDI domande

Tag correlati: SceneBuilder

Progetto JavaFX di base tramite FXML

Questo è un progetto di base che utilizza FXML, creato con NetBeans (Nuovo progetto -> JavaFX -> Applicazione FXML JavaFX). Contiene solo tre file:

Principali classi di applicazione

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);
    }
}

File 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>

controllore

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!");
    }

}

Correre

Costruire ed eseguire il progetto dovrebbe visualizzare una piccola finestra con un pulsante cliccabile:

Esegui il progetto

Come funziona

Brevemente, nella classe principale dell'applicazione, FXMLLoader caricherà basicFXML.fxml dal jar / classpath, come specificato da FXMLLoader.load(getClass().getResource("BasicFXML.fxml")) .

Quando si carica basicFXML.fxml , il loader troverà il nome della classe controller, come specificato da fx:controller="org.stackoverflow.BasicFXMLController" in FXML.

Quindi il loader creerà un'istanza di quella classe, in cui proverà a iniettare tutti gli oggetti che hanno un fx:id nel FXML e sono contrassegnati con l'annotazione @FXML nella classe controller.

In questo esempio, FXMLLoader creerà l'etichetta basata su <Label ... fx:id="label"/> e inietterà l'istanza @FXML private Label label; .

Infine, quando l'intero FXML è stato caricato, FXMLLoader chiamerà il metodo di initialize del controller e verrà eseguito il codice che registra un gestore di azioni con il pulsante.

La modifica

Sebbene il file FXML possa essere modificato all'interno dell'IDE, non è consigliabile, poiché l'IDE fornisce solo il controllo sintattico di base e il completamento automatico, ma non la guida visiva.

L'approccio migliore è aprire il file FXML con Scene Builder, in cui tutte le modifiche verranno salvate nel file.

È possibile avviare Scene Builder per aprire il file: Icona di Scene Builder

O il file può essere aperto con Scene Builder direttamente dall'IDE:

  • Da NetBeans, nella scheda del progetto, fare doppio clic sul file o fare clic con il tasto destro e selezionare Open .
  • Da IntelliJ, nella scheda del progetto, fai clic con il pulsante destro del mouse sul file e seleziona Open In Scene Builder .
  • Da Eclipse, nella scheda del progetto, fare clic con il tasto destro sul file e selezionare Open with Scene Builder .

Modifica file con Scene Builder

Se Scene Builder è installato correttamente e il suo percorso viene aggiunto all'IDE (vedi Note sotto), verrà aperto il file:

FXML modificato con Scene Builder

Le modifiche possono essere apportate trascinando nuovi contenitori o nuovi controlli dai riquadri di sinistra e le proprietà e i valori di layout possono essere modificati nei riquadri di destra.

Si noti che uno dei tag id che consente l'iniezione di FXML nel codice Java è fx:id . Può essere impostato nel riquadro Code :

Impostazione fx: id

Dopo aver applicato le modifiche, salvare il file (Scene Builder -> File -> Salva). Se vengono apportate modifiche alla modifica del file dall'IDE, al momento del salvataggio del file, queste verranno aggiornate in Scene Builder.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow