javafx
Szenenbildner
Suche…
Einführung
JavaFX Scene Builder ist ein visuelles Layout-Tool, mit dem Benutzer JavaFX-Anwendungsbenutzeroberflächen schnell und ohne Codierung entwerfen können. Es wird verwendet, um FXML-Dateien zu generieren.
Bemerkungen
JavaFX Scene Builder ist ein visuelles Layout-Tool, mit dem Benutzer JavaFX-Anwendungsbenutzeroberflächen schnell und ohne Codierung entwerfen können. Benutzer können UI-Komponenten per Drag & Drop in einen Arbeitsbereich ziehen, ihre Eigenschaften ändern und Stylesheets anwenden. Der FXML-Code für das von ihnen erstellte Layout wird automatisch im Hintergrund generiert. Das Ergebnis ist eine FXML-Datei, die mit einem Java-Projekt kombiniert werden kann, indem die Benutzeroberfläche an die Anwendungslogik gebunden wird.
Aus der Perspektive eines Model View Controllers (MVC):
- Die FXML-Datei, die die Beschreibung der Benutzeroberfläche enthält, ist die Ansicht.
- Der Controller ist eine Java-Klasse, die optional die Initializable-Klasse implementiert, die als Controller für die FXML-Datei deklariert ist.
- Das Modell besteht aus auf Java-Seite definierten Domänenobjekten, die über den Controller mit der Ansicht verbunden werden können.
Scene Builder Installation
Laden Sie die neueste Version von Scene Builder von der Gluon- Website herunter und wählen Sie das Installationsprogramm für Ihre Plattform oder die ausführbare Dose aus.
Doppelklicken Sie nach dem Herunterladen des Installationsprogramms, um Scene Builder auf Ihrem System zu installieren. Eine aktualisierte JRE ist enthalten.
Doppelklicken Sie auf das Scene Builder-Symbol, um es als eigenständige Anwendung auszuführen.
IDE-Integration
Obwohl Scene Builder eine eigenständige Anwendung ist, werden FXML-Dateien erstellt, die in ein Java SE-Projekt integriert sind. Beim Erstellen dieses Projekts in einer IDE ist es zweckmäßig, einen Link zum Scene Builder-Pfad anzugeben, damit FXML-Dateien bearbeitet werden können.
- NetBeans: Unter Windows gehen Sie zu NetBeans-> Tools-> Options-> Java-> JavaFX. Unter Mac OS X gehen Sie zu NetBeans-> Preferences-> Java-> JavaFX. Geben Sie den Pfad für das Scene Builder-Home an.
- IntelliJ: Unter Windows gehen Sie zu IntelliJ-> Einstellungen-> Sprachen & Frameworks> JavaFX. Unter Mac OS X gehen Sie zu IntelliJ -> Einstellungen -> Sprachen und Frameworks -> JavaFX. Geben Sie den Pfad für das Scene Builder-Home an.
- Eclipse: Unter Windows gehen Sie zu Eclipse-> Window-> Preferences-> JavaFX. Unter Mac OS X gehen Sie zu Eclipse-> Preferences-> JavaFX. Geben Sie den Pfad für das Scene Builder-Home an.
Ein bisschen Geschichte
Das Scene Builder-Projekt wurde mit JavaFX von Oracle erstellt und ist Open Source im OpenJFX-Projekt.
Oracle stellte Binaries bis Scene Builder 2.0 zur Verfügung, einschließlich der JavaFX-Funktionen vor der Veröffentlichung von Java SE 8u40. Daher sind neue Funktionen wie die Spinner
Steuerelemente nicht enthalten.
Gluon übernahm die Distribution der Binärversionen und ein aktueller Scene Builder 8+ kann von hier aus für jede Plattform heruntergeladen werden .
Es enthält die neuesten Änderungen in JavaFX sowie die neuesten Verbesserungen und Fehlerbehebungen.
Das Open Source-Projekt kann hier gefunden werden, wo Probleme, Funktionsanforderungen und Pull-Anforderungen erstellt werden können.
Die Oracle-Legacy-Binärdateien können hier noch heruntergeladen werden .
Tutorials
Scene Builder-Tutorials finden Sie hier:
- Oracle Scene Builder 2.0 Tutorial
FXML-Tutorials finden Sie hier.
- Oracle FXML- Tutorial
Benutzerdefinierte Steuerelemente
Gluon hat die neue Funktion, die das Importieren von Drittanbieter-Gläsern mit benutzerdefinierten Steuerelementen ermöglicht, mit dem Bibliotheksmanager (verfügbar seit Scene Builder 8.2.0) vollständig dokumentiert .
SO Fragen
Tag bezogen: SceneBuilder
Grundlegendes JavaFX-Projekt mit FXML
Dies ist ein Basisprojekt, das FXML verwendet, das mit NetBeans erstellt wurde (Neues Projekt -> JavaFX -> JavaFX FXML-Anwendung). Es enthält nur drei Dateien:
Hauptanwendungsklasse
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-Datei
<?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>
Regler
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!");
}
}
Lauf
Beim Erstellen und Ausführen des Projekts sollte ein kleines Fenster mit einer anklickbaren Schaltfläche angezeigt werden:
Wie es funktioniert
Kurz gesagt lädt der FXMLLoader in der Hauptanwendungsklasse basicFXML.fxml
aus dem jar / FXMLLoader.load(getClass().getResource("BasicFXML.fxml"))
, wie von FXMLLoader.load(getClass().getResource("BasicFXML.fxml"))
.
Beim Laden von basicFXML.fxml
findet der Loader den Namen der Controller-Klasse, wie in fx:controller="org.stackoverflow.BasicFXMLController"
in der FXML angegeben.
Dann erstellt der Loader eine Instanz dieser Klasse, in der versucht wird, alle Objekte @FXML
, die eine fx:id
in der FXML haben und in der Controller-Klasse mit der @FXML
FXML-Annotation gekennzeichnet sind.
In diesem Beispiel erstellt der FXMLLoader das Label basierend auf <Label ... fx:id="label"/>
und @FXML private Label label;
die @FXML private Label label;
in das @FXML private Label label;
des @FXML private Label label;
.
Wenn die gesamte FXML geladen ist, ruft der FXMLLoader schließlich die initialize
des Controllers auf, und der Code, der einen Aktionshandler mit der Schaltfläche registriert, wird ausgeführt.
Bearbeitung
Die FXML-Datei kann zwar innerhalb der IDE bearbeitet werden, wird jedoch nicht empfohlen, da die IDE nur eine grundlegende Syntaxprüfung und automatische Vervollständigung, jedoch keine visuelle Anleitung bietet.
Am besten öffnen Sie die FXML-Datei mit Scene Builder, in dem alle Änderungen in der Datei gespeichert werden.
Der Scene Builder kann gestartet werden, um die Datei zu öffnen:
Oder die Datei kann mit Scene Builder direkt von der IDE aus geöffnet werden:
- Doppelklicken Sie in NetBeans auf der Registerkarte "Projekt" auf die Datei oder klicken Sie mit der rechten Maustaste und wählen Sie "
Open
. - Klicken Sie in IntelliJ auf der Registerkarte "Projekt" mit der rechten Maustaste auf die Datei und wählen Sie "
Open In Scene Builder
. - Klicken Sie in Eclipse auf der Registerkarte "Projekt" mit der rechten Maustaste auf die Datei und wählen Sie "
Open with Scene Builder
.
Wenn Scene Builder ordnungsgemäß installiert und der Pfad zur IDE hinzugefügt wurde (siehe Anmerkungen unten), wird die Datei geöffnet:
Sie können Änderungen vornehmen, indem Sie neue Container oder neue Steuerelemente aus den linken Bereichen ziehen. Eigenschaften und Layoutwerte können in den rechten Bereichen geändert werden.
Beachten Sie, dass eines der ID-Tags, das das Injizieren der FXML in den Java-Code ermöglicht, fx:id
. Es kann in der festgelegt werden - Code
- Fenster:
Speichern Sie die Datei nach dem Anwenden der Änderungen (Scene Builder -> Datei -> Speichern). Wenn Sie Änderungen an der Datei über die IDE vornehmen, werden diese beim Speichern der Datei in Scene Builder aktualisiert.