動機
IntelliJ IDEAでJavaFXアプリケーションを作成する際に、FXMLファイルで画面レイアウト定義、CSSファイルで見栄え定義、プロパティファイルでリソース定義をする場合に用意するファイルと毎度のコードを生成するプロジェクトテンプレートを作成します。
作成環境は次です。
OS | Windows 10 Home 64bit |
---|---|
IntelliJ IDEA | Community 2019.1 |
SDK | Liberica 12 |
ここで、JavaFXアプリケーションのビルド・実行に使用するSDK(JDK)は、BellSoft社が無償提供するOpenJDK 12にJavaFXを同梱したLiberica JDK 12です。
https://bell-sw.com/pages/java-12/
プロジェクトテンプレートの作成
IntellIJ IDEAには、作ったプロジェクトをテンプレートして保存する機能があります。
[Tools]メニュー > [Save Project as Template]
そこで、FXMLファイル、CSSファイル、プロパティファイルを使用するJavaFXアプリケーションの最小構成をプロジェクトとして作成し、この機能でテンプレート化してみます。
最小構成のプロジェクトを作成しテンプレート保存
[Files]メニュー > [New] > [Project] で「New Project」画面を開き、左側ペインで[Java]を選択、右側ペイン上の[Project SDK]欄ではJavaFXを同梱するJDK(今回はLiberica JDK 12)を指定します。
[Project name]には、samplefx と入れてみました。
続いて、パッケージを1つ作成します。パッケージ名は、テンプレートからプロジェクトを作る際に指定したものに置き換えられるので、ここでは適当な名前(com.torutk.samplefx)を付けておきます。
そのパッケージの下に、javafx.application.Applicationを継承したメインクラス、コントローラークラス、FXMLファイル、CSSファイル、プロパティファイルを作っていきます。
ビルド・実行ができることを確認し、プロジェクトテンプレートを作成します。
[Tools]メニュー > [Save Project as Template]を実行し、「Save Project As Template」画面でテンプレートの名前と説明を入力します。
作成されたプロジェクトテンプレートはzipアーカイブファイルで、ユーザーディレクトリの下に生成されます。
C:\Users\<ユーザー名>\.IdeaIC<バージョン>\config\projectTemplates\JavaFX Sample Application.zip
テンプレートからプロジェクトを作成
先に作成したプロジェクトテンプレートからプロジェクトを生成します。
[File]メニュー > [New] > [Project]で「New Project」画面を開きます。左側ペインにある[User-defined]を選択すると右側ペインにユーザー定義のプロジェクトテンプレートがリストされます。この中に先ほど作成した[JavaFX Sample Application]があるのでこれを選択します。
プロジェクト名とパッケージ名を指定します。
指定したプロジェクト名に合わせてJavaモジュール名を変更するか問うダイアログが表示されます。チェックを付けます。
次のファイル構成で新しいプロジェクトが生成されます。
注意点
Project Templateの雛形とするプロジェクトを作成するときに、プロジェクト名とパッケージ名を同じにすると、うまく動かないコードが生成されてしまいます。
例)プロジェクト名をsamplefxとし、パッケージ名をsampleとしたプロジェクトテンプレートを作成し、これを雛形とするアプリケーションプロジェクトを作成、パッケージ名にcom.torutk.helloと指定したところ、プロジェクトが正常に作られませんでした。
IntelliJ IDEAのモジュール定義ファイル samplefx.iml に対し、IntelliJ IDEAのプロジェクトファイルmodules.xmlの中で参照するパス名がsamplefx.imlではなく、com.torutk.hellofx.imlと"sample"の部分が置き換えられてしまいました。