ひしだまの変更履歴

ひしだま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でシェアする