javafx
Scenbyggare
Sök…
Introduktion
JavaFX Scene Builder är ett visuellt layoutverktyg som låter användare snabbt utforma användargränssnitt för JavaFX-applikationer, utan kodning. Det används för att generera FXML-filer.
Anmärkningar
JavaFX Scene Builder är ett visuellt layoutverktyg som låter användare snabbt utforma användargränssnitt för JavaFX-applikationer, utan kodning. Användare kan dra och släppa UI-komponenter till ett arbetsområde, ändra deras egenskaper, tillämpa formatmallar och FXML-koden för den layout som de skapar genereras automatiskt i bakgrunden. Resultatet är en FXML-fil som sedan kan kombineras med ett Java-projekt genom att binda användargränssnittet till applikationens logik.
Från ett MVC-perspektiv (Model View Controller):
- FXML-filen, som innehåller beskrivningen av användargränssnittet, är vyn.
- Styrenheten är en Java-klass, som valfritt implementerar klassen Initialiserbar, som förklaras som styrenhet för FXML-filen.
- Modellen består av domänobjekt, definierade på Java-sidan, som kan anslutas till vyn via styrenheten.
Scen Builder Installation
Ladda ner den senaste versionen av Scene Builder från Gluons webbplats , välj installationsprogrammet för din plattform eller den körbara burken.
När installationsprogrammet laddats ner, dubbelklickar du för att installera Scene Builder på ditt system. En uppdaterad JRE ingår.
Dubbelklicka på ikonen Scenebyggare för att köra den som fristående program.
IDE-integration
Medan Scene Builder är ett fristående program, producerar det FXML-filer som är integrerade med ett Java SE-projekt. När du skapar detta projekt på en IDE är det bekvämt att inkludera en länk till Scen Builder-vägen, så FXML-filer kan redigeras.
- NetBeans: På Windows går du till NetBeans-> Tools-> Options-> Java-> JavaFX. På Mac OS X gå till NetBeans-> Inställningar-> Java-> JavaFX. Ange sökvägen till Scen Builder Home.
- IntelliJ: På Windows går du till IntelliJ-> Inställningar-> Språk och ramverk-> JavaFX. På Mac OS X gå till IntelliJ-> Inställningar-> Språk och ramverk-> JavaFX. Ange sökvägen till Scen Builder Home.
- Eclipse: I Windows går du till Eclipse-> Window-> Preferences-> JavaFX. Gå till Eclipse-> Inställningar-> JavaFX på Mac OS X. Ange sökvägen till Scen Builder Home.
Lite historia
Scene Builder-projektet skapades med JavaFX av Oracle och det är öppen källkod inom OpenJFX-projektet.
Oracle tillhandahöll binärer, fram till Scene Builder v 2.0, inklusive endast JavaFX-funktioner innan Java SE 8u40 släpptes, så nya funktioner som Spinner
kontrollerna ingår inte.
Gluon tog över distributionen av binära utgivningar, och en aktuell Scene Builder 8+ kan laddas ner för varje plattform härifrån .
Det inkluderar de senaste ändringarna i JavaFX, och även de senaste förbättringarna och bugfixar.
Projektet med öppen källkod kan hittas här där frågor, funktionsbegäranden och dragförfrågningar kan skapas.
Oracle-arvsbinarierna kan fortfarande laddas ner här .
Handledningar
Tutorials för Scene Builder kan hittas här:
- Oracle Scene Builder 2.0 handledning
FXML-handledning finns här.
- Oracle FXML handledning
Anpassade kontroller
Gluon har fullständigt dokumenterat den nya funktionen som gör det möjligt att importera tredjepartsburkar med anpassade kontroller med hjälp av Library Manager (tillgängligt sedan Scene Builder 8.2.0).
SO frågor
Tagg relaterat: SceneBuilder
Grundläggande JavaFX-projekt med FXML
Detta är ett grundläggande projekt som använder FXML, skapat med NetBeans (Nytt projekt -> JavaFX -> JavaFX FXML-applikation). Den innehåller bara tre filer:
Huvudsaklig applikationsklass
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-fil
<?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>
Kontrollant
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!");
}
}
Springa
Att bygga och driva projektet bör visa ett litet fönster med en klickbar knapp:
Hur det fungerar
Kortfattat, i huvudklassen för applikation, kommer FXMLLoader att ladda basicFXML.fxml
från burken / klassvägen, som anges av FXMLLoader.load(getClass().getResource("BasicFXML.fxml"))
.
När du laddar basicFXML.fxml
lastaren namnet på kontrollerklassen, som anges av fx:controller="org.stackoverflow.BasicFXMLController"
i FXML.
Sedan kommer lastaren att skapa en instans av den klassen där den kommer att försöka injicera alla objekt som har en fx:id
i FXML och är markerade med @FXML
anteckningen i kontrollklassen.
I det här exemplet skapar FXMLLoader etiketten baserad på <Label ... fx:id="label"/>
, och den kommer att injicera etikettinstansen i den @FXML private Label label;
.
Slutligen, när hela FXML har laddats, kommer FXMLLoader att anropa kontrollerns initialize
, och koden som registrerar en åtgärdshanterare med knappen kommer att köras.
redigera
Medan FXML-filen kan redigeras inom IDE, rekommenderas den inte, eftersom IDE ger bara grundläggande syntaxkontroll och autofyllt, men inte visuell vägledning.
Det bästa sättet är att öppna FXML-filen med Scene Builder, där alla ändringar sparas i filen.
Scen Builder kan startas för att öppna filen:
Eller så kan filen öppnas med Scene Builder direkt från IDE:
- Från NetBeans, på projektfliken, dubbelklicka på filen eller högerklicka och välj
Open
. - Från IntelliJ, på projektfliken, högerklicka på filen och välj
Open In Scene Builder
. - Från Eclipse, på projektfliken, högerklicka på filen och välj
Open with Scene Builder
.
Om Scen Builder är korrekt installerad och dess sökväg läggs till IDE (se anmärkningar nedan) öppnar den filen:
Ändringar kan göras genom att dra nya behållare eller nya kontroller från de vänstra rutorna, och egenskaper och layoutvärden kan ändras på de högra rutorna.
Observera att en av id-taggen som gör det möjligt att injicera FXML i Java-koden är fx:id
. Det kan ställas in i Code
rutan:
Spara filen efter Scenebyggare -> Fil -> Spara. Om ändringar görs när du redigerar filen från IDE, kommer de att uppdateras på Scene Builder när du sparar filen.