TornadoFX¶
はじめに¶
TornadoFXとは¶
KotlinからJavaFXを扱うにあたり、コード記述量を最小限で済むようKotlin言語機能を十分に活用したラッパーライブラリです。
公式サイト¶
GitHub上で開発されています。
https://github.com/edvin/tornadofx
ドキュメントは、「TornadoFX Guide」に集約されています。
https://edvin.gitbooks.io/tornadofx-guide/content/
ライブラリの使用¶
TornadoFXライブラリは、Mavenリポジトリにアップされているので、MavenおよびGradleを使う際はmavenリポジトリから取得するのが定番です。
GitHub開発サイト上から、リリースされたバージョンのソースコードとjarファイルを取得することもできます。
現在のバージョン¶
2018年3月13日現在、バージョン1.7.15がリリースされています。
対応するKotlinバージョンは1.2.21です。
開発環境¶
IntelliJ IDEA¶
IntelliJ IDEA Community Edtion 上のKotlin開発機能を使用します。TornadoFXプラグインも用意されているので、このプラグインを追加すると便利でしょう。
- [ファイル]メニュー > [設定] > 左側ペインで[プラグイン]を選択、右側ペインで[リポジトリの参照]ボタンをクリック
- 「リポジトリの参照」画面でTornadoFXを選択し、[インストール]をクリック
新規プロジェクトを作成する際、[TornadoFX]が選択可能、さらにmavenかgradleを選ぶことができます。
右側ペインでtornadofx-gradle-porjectを選択してプロジェクトを生成すると次のプロジェクトツリーが生成されます。デモ用のサンプルコードが含まれています。
プロジェクトを作成時に、[自動インポートを使用する]にチェックを付けていない場合、IntelliJ IDEAからの通知メッセージに
リンクされていない Gradle プロジェクトですか?
Gradle プロジェクトのインポート により Gradle ツール・ウィンドウも有効になります。
と出るので下線部をクリックする。「Gradleからモジュールをインポート」画面が出るので[OK]ボタンを押します。Gradleの同期が走って必要なライブラリをダウンロードしてきます。
プログラミング例¶
最初はHello world¶
TornadoFXでは、最低限アプリケーションを実行する入口となるApp継承クラスと、ノードの配置を定義するView継承クラスの2つを定義します。
アプリケーションの入口となるAppを継承したMyAppクラスと、ノードの配置を定義するViewを継承したMyViewクラスを作成します。
ライブラリの仕様¶
ラッパークラス¶
App¶
tornadofx.Appクラスは、javafx.application.Applicationを継承したクラスで、Appクラスを利用する際はstartメソッドの実装は不要です。
また、mainを持つので、main関数の実装も不要です。
TornadoFX独自の概念¶
View¶
tornadofx.Viewクラスは、ノードのレイアウトと表示ロジックを含むクラスで、シングルトンとして扱われます。
Viewを利用する際は、Viewを継承したクラスで必ずrootプロパティ(Parent型)をオーバーライドし、それにビューの内容を詰めます。
また、Viewは別のViewに含めることができます。
Controller¶
Fragment¶
Viewはシングルトンですが、あるUIの構造を複数個所で使いまわしたいときは、Fragmentを使います。