最終更新日:180113 原本2015-12-23 

デザイナを使用してEclipseでJavaFX8開発をする

More than 1 year has passed since last update.

概要

JavaFX8を使用したアプリケーションを、デザインはScene Builder 2.0、コードはEclipseを使用して作成するため、各種インストール・設定を実施する。(参考のソース)

ファイルのダウンロードとインストール

・Eclipse
JDK8が入っているもの(4.4以上?)

・Scene Builder 2.0(JavaFX8のデザインをGUIで作成する)
http://www.oracle.com/technetwork/java/javase/downloads/sb2download-2177776.html
msiをクリック(ソースからコンパイル)

http://gluonhq.com/open-source/scene-builder/
から実行ファイルをダウンロードできる。

・e(fx)clipse(EclipseとScene Builderを関連付ける)
メインサイト
http://www.eclipse.org/efxclipse/install.html

新規ソフトウェアのインストールで指定するURI
http://download.eclipse.org/efxclipse/updates-released/1.0.0/site

EclipseでScene Builderの設定をする

・「ウィンドウ→設定→JavaFX」のScenBuilder executableを(デフォルトから変更してなければ)「C:\Program Files (x86)\Oracle\JavaFX Scene Builder 2.0\JavaFX Scene Builder 2.0.exe」と設定する

EclipseでJavaFXのアプリケーションを作成する

・「ファイル→新規→その他」の新規ウィザードより、「JavaFX→JavaFX Project」。
・プロジェクト名を入れて、次へ、次へ
・Application type: 言語:FXML Desktop Root-type: javafx.scene.layout.BorderPane

・Main.javaを「右クリック→実行→Javaアプリケーション」で空のアプリケーションが起動される

・Sample.fxmlを「右クリック→Open with SecenBuilder」でレイアウトを編集する

簡単なアプリケーションの流れ

・SecenBuilderにて外観を作成する
「Containers→Pane」上には、自由にコントロールを配置できるので、便利です。
(以前のJavaはVisual Studioみたいにはコントロールを配置できませんでしたが、ついに追いついたという感じがします。
ウィンドウのサイズ変更が謎の挙動ですが、、、)

・SampleController.javaにprivate変数でコントロールの名前を定義する。

SampleController.java
    @FXML private Button btn0;
    @FXML private TextField text;

などと書く。

・SampleController.javaにイベントを定義する。

SampleController.java
    @FXML
    public void onbtnNumberClicked(ActionEvent event) {

        Object obj = event.getSource();
        Button btn = (Button)obj;

        String str = text.getText();
        text.setText(str + btn.getText());
    }

イベントはだいたい「public void methodName(ActionEvent event)」の型で定義するようです。

・SecenBuilderでコントロールの名前とイベントを設定する
コントロールをクリックし、「Code→fx:id」の右をクリックする。使用する名前を選択する。
コントロールをクリックし、「Code→On Action」の右をクリックする。使用するイベントを選択する
「File→Save」で保存する

・Main.javaを「右クリック→実行→Javaアプリケーション」で実行する。

Visual Studio系との比較(現時点での私見)

・コントロールとコーディングの順番が逆
Visual Studioの場合、デザインをし、ボタンをダブルクリックして、ボタン用のコーディングを開始する。Scene Builderの場合、コーディングしてから、デザイナのボタンのイベントと結びつける。

・JavaFX8の方が、MVCを分けやすい
Visual Studioはボタンとそれに関する処理を一つのソースに納めがち。
Scene Builderの場合、ボタンの処理をJavaで書き、それの動作をFXMLに書くので、分けやすい気がする。

*デザイナがEclipseと別になっているので、デザイン時に軽い(ような気がする。大きなプログラムは作ってないので、不明)

*Visual Studioの方がデザイナーとして、使いやすい。JavaFX初心者なので、ウィンドウのサイズ変更がよくわからない。

まとめ

ようやく?公式のJavaでVisualStudioのデザイナのような開発方法ができるようになりました。Javaのクライアントが採用されていくことと、Scene Builderでデザインしやすくなっていくことを期待します。