サーチ…


前書き

JavaFX Scene Builderはビジュアルレイアウトツールで、コーディングなしでJavaFXアプリケーションのユーザーインターフェイスをすばやく設計できます。 FXMLファイルを生成するために使用されます。

備考

JavaFX Scene Builderはビジュアルレイアウトツールで、コーディングなしでJavaFXアプリケーションのユーザーインターフェイスをすばやく設計できます。ユーザーは、UIコンポーネントをワークエリアにドラッグアンドドロップし、プロパティを変更したり、スタイルシートを適用したり、作成中のレイアウトのFXMLコードをバックグラウンドで自動的に生成したりできます。その結果、アプリケーションのロジックにUIをバインドすることによって、Javaプロジェクトと結合できるFXMLファイルが作成されます。

モデルビューコントローラ(MVC)の観点から:

  • ユーザーインターフェイスの説明を含むFXMLファイルがビューです。
  • コントローラはJavaクラスであり、FXMLファイルのコントローラとして宣言されているInitializableクラスを実装することもできます。
  • このモデルは、Java側で定義されたドメインオブジェクトで構成され、コントローラを介してビューに接続できます。

シーンビルダーのインストール

  1. Scene Builderの最新バージョンをGluonのWebサイトからダウンロードして、使用しているプラ​​ットフォームのインストーラまたは実行可能なjarファイルを選択します。

  2. インストーラをダウンロードした状態で、システムにScene Builderをダブルクリックしてインストールします。更新されたJREが含まれています。

  3. シーンビルダアイコンをダブルクリックしてスタンドアロンアプリケーションとして実行します。

  4. IDE統合

    シーンビルダはスタンドアロンアプリケーションですが、Java SEプロジェクトと統合されたFXMLファイルを生成します。このプロジェクトをIDEで作成するときは、シーンビルダーのパスへのリンクを含めると便利です.FXMLファイルを編集することができます。

    • NetBeans:Windowsでは、NetBeans-> Tools-> Options-> Java-> JavaFXに移動します。 Mac OS Xでは、NetBeans-> Preferences-> Java-> JavaFXに移動します。シーンビルダホームのパスを指定します。 シーンビルダのパス -  NetBeans
    • IntelliJ:WindowsではIntelliJ-> Settings-> Languages&Frameworks-> JavaFXに移動します。 Mac OS Xでは、[IntelliJ] - > [環境設定] - > [言語とフレームワーク] - > [JavaFX]を選択します。シーンビルダホームのパスを指定します。 シーンビルダのパス -  IntelliJ
    • Eclipse:Windowsでは、Eclipse-> Window-> Preferences-> JavaFXに移動します。 Mac OS Xでは、Eclipse-> Preferences-> JavaFXに移動します。シーンビルダホームのパスを指定します。 シーンビルダーのパス -  Eclipse

歴史の少し

Scene Builderプロジェクトは、JavaFX by Oracleを使用して作成され、OpenJFXプロジェクト内のオープンソースです。

Oracle 、Java SE 8u40のリリース前にJavaFX機能のみを含むScene Builder v 2.0までバイナリを提供していたので、 Spinnerコントロールのような新機能は含まれていません。

Gluonはバイナリリリースのディストリビューションを引き継ぎ、最新のScene Builder 8+をすべてのプラットフォームでここからダウンロードできます

これには、JavaFXの最新の変更、最近の改善とバグ修正が含まれています。

問題、機能リクエスト、プルリクエストを作成できるオープンソースプロジェクトがここにあります。

Oracleレガシー・バイナリは、 ここからダウンロードできます

チュートリアル

シーンビルダのチュートリアルはここにあります:

FXMLチュートリアルはここで見つけることができます。

カスタムコントロール

Gluonは、ライブラリマネージャ(Scene Builder 8.2.0以降で利用可能)を使用して、サードパーティのjarファイルをカスタムコントロールでインポートすることを可能にする新しい機能を完全に文書化しました。

ライブラリマネージャー

ご質問

タグ関連: SceneBuilder

FXMLを使用した基本JavaFXプロジェクト

これは、NetBeans(New Project - > JavaFX - > JavaFX FXMLアプリケーション)で作成されたFXMLを使用する基本的なプロジェクトです。それは3つのファイルだけを含んでいます:

メインアプリケーションクラス

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ファイル

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

コントローラ

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

}

走る

プロジェクトのビルドと実行には、クリック可能なボタン付きの小さなウィンドウが表示されます。

プロジェクトを実行する

使い方

簡潔には、メインアプリケーションクラスで、FXMLLoaderがロードされbasicFXML.fxmlによって指定されるように、JAR /クラスパスからFXMLLoader.load(getClass().getResource("BasicFXML.fxml"))

basicFXML.fxmlロードすると、 basicFXML.fxml fx:controller="org.stackoverflow.BasicFXMLController"で指定されているように、ローダーはコントローラクラスの名前を見つけます。

次に、ローダーはそのクラスのインスタンスを作成し、 fx:idを持つすべてのオブジェクトをFXMLに挿入しようとし、コントローラクラスの@FXMLアノテーションでマークされます。

このサンプルでは、​​FXMLLoaderは<Label ... fx:id="label"/>に基づいてラベルを作成し、ラベルインスタンスを@FXML private Label label;

最後に、FXML全体がロードされると、FXMLLoaderはコントローラのinitializeメソッドを呼び出し、アクションハンドラをボタンに登録するコードが実行されます。

編集

FXMLファイルはIDE内で編集できますが、IDEは基本的な構文チェックと自動補完を提供しますが、視覚的なガイダンスは提供していないため、お勧めできません。

最善の方法は、Scene BuilderでFXMLファイルを開き、すべての変更をファイルに保存することです。

シーンビルダを起動してファイルを開くことができます: シーンビルダアイコン

または、IDEから直接Scene Builderでファイルを開くこともできます:

  • NetBeansの[プロジェクト]タブで、ファイルをダブルクリックするか、右クリックして[ Open ]を選択します。
  • IntelliJのプロジェクトタブで、ファイルを右クリックし、 Open In Scene Builderを選択します。
  • Eclipseのプロジェクトタブで、ファイルを右クリックし、「 Open with Scene Builder選択します。

シーンビルダでファイルを編集する

シーンビルダが正しくインストールされ、そのパスがIDEに追加されている場合(下記の「備考」を参照)、ファイルが開きます:

シーンビルダで編集されたFXML

新しいコンテナまたは新しいコントロールを左のペインからドラッグすることで変更できます。また、プロパティとレイアウトの値は右のペインで変更できます。

FXMLをJavaコードに挿入できるidタグの1つはfx:idです。 Codeペインで設定することができます:

fx:idを設定する

変更を適用した後、ファイルを保存します(シーンビルダ - >ファイル - >保存)。 IDEからファイルを編集して変更を加えた場合、ファイルを保存するときにシーンビルダでそのファイルが更新されます。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow