ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

FXMLからControllerを生成するツール

2012-04-15 23:59:32 | PG(Java)

JavaFX Scene Builderを使うとJavaFX2のウィンドウレイアウトを表すFXMLファイルを作ることが出来る。
このFXMLとデータ及びイベントを連動させる為にControllerというクラスを作る必要があるが、比較的シンプルな構造なので、FXMLから生成するツールを作ってみた。
(そのうち本家でも同じようなものが提供されて、用無しになる可能性は高いが^^;)

動作環境はScala2.9+JavaFX2.1。
Windowsで実行するためのバッチファイルだけ用意したw
環境に応じて変える必要があるけど、必要なのはクラスパスの指定だけなのでそんなに難しくはないでしょう。
ちなみに生成されるControllerはJavaだけど、EclipseのScalaプロジェクトにjavaファイルを置けば勝手にJavaとしてコンパイルしてくれるので、Scalaでも問題なく使える。
(当ツールがそういう風にして使っているw)

イベント用のメソッドは空メソッドとして用意される。
想定としては、生成されたControllerを継承するクラスを別途作り、メソッドはオーバーライドする。こうすれば、何度生成し直しても、自分が作ったロジックが消えることは無い。
その為、生成するControllerクラス名に(Abstractのような)接頭辞もしくは接尾辞を付けられるようにしてある。
(抽象メソッドとせず空メソッドとした理由は、Scalaでoverrideキーワードを付ける事を強制する為w
Scene Builder側でイベント名を変えた場合、overrideキーワードを付けておけばエラーになってくれるから、分かり易い)

あと、ファイルをドロップすることでFXMLファイルを指定できるようにしたいんだけど、JavaFX2でドロップを処理する方法が分からないので、保留。


 今回、Eclipse上で作ったプロジェクトをGitHubに乗せてみたんだけど、ちょっと変な構成になってしまった(苦笑)

「hishidama/fxml-controller-generator」の直下にsrcとかbinとかのディレクトリーが来るようにしたかったんだけど、「fxmlControllerGen」という、Eclipseのプロジェクト名のディレクトリーがはさまってしまった。
EGitの手順上、これを変更できる箇所が分からないんだよなぁ。


コメント (2)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« <? ?>が消えるバグ | トップ | Python3でのSphinxのインスト... »
最新の画像もっと見る

2 コメント

コメント日が  古い順  |   新しい順
これは素晴らしいですね (欽ちゃん1号)
2012-04-16 14:00:11
いざ作るとなると結構大変ですよね。
素晴らしいです。
少し追加して頂けるなら
この辺でしょうか?
import java.net.URL;
import javafx.fxml.Initializable;
import javafx.fxml.FXML;
import java.util.ResourceBundle;

implements Initializable

@FXML

@Override public void initialize(URL location, ResourceBundle resources) {}
返信する
initialize (ひしだま)
2012-04-19 23:27:18
ありがとうございます。

自動生成したクラスを継承して自分のクラスを作る想定なので、Initializableは自クラスの方でimplementsすればいいかと思って、敢えて入れていませんでした。
入れた方が便利そうなら、入れますかね~w
返信する

コメントを投稿

PG(Java)」カテゴリの最新記事