javafx
Scene Builder
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
Scarica la versione più recente di Scene Builder dal sito Web di Gluon, selezionando l'installer per la tua piattaforma o il jar eseguibile.
Con il programma di installazione scaricato, fai doppio clic per installare Scene Builder sul tuo sistema. È incluso un JRE aggiornato.
Fare doppio clic sull'icona di Scene Builder per eseguirlo come applicazione autonoma.
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.
- 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.
- 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.
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:
- Tutorial di Oracle Scene Builder 2.0
Le esercitazioni FXML possono essere trovate qui.
- Oracle FXML esercitazione
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).
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:
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:
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
.
Se Scene Builder è installato correttamente e il suo percorso viene aggiunto all'IDE (vedi Note sotto), verrà aperto il file:
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
:
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.