Java
JavaFX

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

More than 3 years have 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でデザインしやすくなっていくことを期待します。