Zoeken…


Invoering

JavaFX Scene Builder is een visuele lay-outtool waarmee gebruikers snel gebruikersinterfaces voor JavaFX-toepassingen kunnen ontwerpen, zonder codering. Het wordt gebruikt om FXML-bestanden te genereren.

Opmerkingen

JavaFX Scene Builder is een visuele lay-outtool waarmee gebruikers snel gebruikersinterfaces voor JavaFX-toepassingen kunnen ontwerpen, zonder codering. Gebruikers kunnen UI-componenten naar een werkgebied slepen en neerzetten, hun eigenschappen wijzigen, stijlbladen toepassen en de FXML-code voor de lay-out die ze maken, wordt automatisch op de achtergrond gegenereerd. Het resultaat is een FXML-bestand dat vervolgens kan worden gecombineerd met een Java-project door de UI te binden aan de logica van de toepassing.

Vanuit een Model View Controller (MVC) perspectief:

  • Het FXML-bestand, met de beschrijving van de gebruikersinterface, is de weergave.
  • De controller is een Java-klasse, die optioneel de klasse Initializable implementeert, die wordt gedeclareerd als de controller voor het FXML-bestand.
  • Het model bestaat uit domeinobjecten, gedefinieerd aan de Java-zijde, die via de controller met de weergave kunnen worden verbonden.

Scene Builder Installatie

  1. Download Scene Builder meest recente versie van de website van Gluon en selecteer het installatieprogramma voor uw platform of de uitvoerbare pot.

  2. Dubbelklik terwijl het installatieprogramma is gedownload om Scene Builder op uw systeem te installeren. Een bijgewerkte JRE is inbegrepen.

  3. Dubbelklik op het pictogram Scene Builder om het als zelfstandige toepassing uit te voeren.

  4. IDE-integratie

    Hoewel Scene Builder een zelfstandige toepassing is, produceert het FXML-bestanden die zijn geïntegreerd met een Java SE-project. Wanneer u dit project op een IDE maakt, is het handig om een link naar het Scene Builder-pad op te nemen, zodat FXML-bestanden kunnen worden bewerkt.

    • NetBeans: Ga in Windows naar NetBeans-> Tools-> Options-> Java-> JavaFX. Op Mac OS X ga naar NetBeans-> Preferences-> Java-> JavaFX. Geef het pad op voor de Scene Builder Home. Scene Builder Path - NetBeans
    • IntelliJ: Ga in Windows naar IntelliJ-> Instellingen-> Talen & Frameworks-> JavaFX. Op Mac OS X ga naar IntelliJ-> Voorkeuren-> Talen & Frameworks>> JavaFX. Geef het pad op voor de Scene Builder Home. Scene Builder Path - IntelliJ
    • Eclipse: Ga in Windows naar Eclipse-> Venster-> Voorkeuren-> JavaFX. Op Mac OS X ga naar Eclipse-> Voorkeuren-> JavaFX. Geef het pad op voor de Scene Builder Home. Scene Builder Path - Eclipse

Een beetje geschiedenis

Het Scene Builder-project is gemaakt met behulp van JavaFX door Oracle en het is open source binnen het OpenJFX-project.

Oracle bood binaries tot Scene Builder v 2.0, inclusief alleen JavaFX-functies vóór de release van Java SE 8u40, dus nieuwe functies zoals de Spinner besturingselementen zijn niet inbegrepen.

Gluon nam de distributie van binaire releases over en een up-to-date Scene Builder 8+ kan voor elk platform vanaf hier worden gedownload.

Het bevat de nieuwste wijzigingen in JavaFX, en ook recente verbeteringen en bugfixes.

Het open source project kan worden gevonden hier waar aangelegenheden, feature requests en pull verzoeken kunnen worden gecreëerd.

De oudere bincle-bestanden van Oracle kunnen hier nog steeds worden gedownload.

tutorials

Handleidingen voor Scene Builder zijn hier te vinden:

FXML-tutorials zijn hier te vinden.

Aangepaste besturingselementen

Gluon heeft de nieuwe functie volledig gedocumenteerd waarmee potten van derden met aangepaste besturingselementen kunnen worden geïmporteerd met behulp van Library Manager (beschikbaar sinds Scene Builder 8.2.0).

Bibliotheek Manager

ZO vragen

Taggerelateerd : SceneBuilder

Basis JavaFX-project met FXML

Dit is een basisproject dat FXML gebruikt, gemaakt met NetBeans (Nieuw project -> JavaFX -> JavaFX FXML-toepassing). Het bevat slechts drie bestanden:

Hoofdtoepassingsklasse

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

FXML-bestand

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

controleur

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

}

Rennen

Het bouwen en uitvoeren van het project moet een klein venster weergeven met een klikbare knop:

Voer het project uit

Hoe het werkt

In het kort, in de belangrijkste Application klasse, de FXMLLoader laadt basicFXML.fxml uit de pot / classpath, zoals gespecificeerd door FXMLLoader.load(getClass().getResource("BasicFXML.fxml")) .

Bij het laden van basicFXML.fxml zal de lader de naam van de controllerklasse vinden, zoals gespecificeerd door fx:controller="org.stackoverflow.BasicFXMLController" in de FXML.

Vervolgens maakt de loader een instantie van die klasse, waarin wordt geprobeerd alle objecten met een fx:id in de FXML te injecteren en worden gemarkeerd met de annotatie @FXML in de controllerklasse.

In dit voorbeeld maakt de FXMLLoader het label op basis van <Label ... fx:id="label"/> en injecteert het de @FXML private Label label; in het @FXML private Label label; .

Ten slotte, wanneer de hele FXML is geladen, roept de FXMLLoader de initialize de controller op en wordt de code die een actie-handler bij de knop registreert, uitgevoerd.

bewerken

Hoewel het FXML-bestand kan worden bewerkt binnen de IDE, wordt dit niet aanbevolen, omdat de IDE alleen standaard syntaxiscontrole en autocompletion biedt, maar geen visuele begeleiding.

De beste aanpak is om het FXML-bestand te openen met Scene Builder, waar alle wijzigingen in het bestand worden opgeslagen.

Scene Builder kan worden gestart om het bestand te openen: Scene Builder-pictogram

Of het bestand kan rechtstreeks vanuit Scene worden geopend met Scene Builder:

  • Dubbelklik vanuit NetBeans op het projecttabblad op het bestand of klik met de rechtermuisknop en selecteer Open .
  • Klik vanuit IntelliJ op het projecttabblad met de rechtermuisknop op het bestand en selecteer Open In Scene Builder .
  • Klik vanuit Eclipse op het projecttabblad met de rechtermuisknop op het bestand en selecteer Open with Scene Builder .

Bewerk het bestand met Scene Builder

Als Scene Builder correct is geïnstalleerd en het pad is toegevoegd aan de IDE (zie Opmerkingen hieronder), wordt het bestand geopend:

FXML bewerkt met Scene Builder

Wijzigingen kunnen worden aangebracht door nieuwe containers of nieuwe besturingselementen uit de linkervensters te slepen, en eigenschappen en lay-outwaarden kunnen in de rechtervensters worden gewijzigd.

Merk op dat een van de id-tags waarmee FXML in de Java-code kan worden geïnjecteerd fx:id . Het kan worden ingesteld in de Code venster:

Fx instellen: id

Nadat u de wijzigingen hebt aangebracht, slaat u het bestand op (Scene Builder -> Bestand -> Opslaan). Als er wijzigingen worden aangebracht in het bewerken van het bestand vanuit de IDE, worden deze bij het opslaan van het bestand bijgewerkt in Scene Builder.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow