チュートリアル: Swing を使用して UI を構築する
IntelliJ IDEA の UI デザイナープラグインを使用すると、Swing ライブラリコンポーネントを使用して、アプリケーションのグラフィカルユーザーインターフェース (GUI) を作成できます。 UI デザイナーを使用すると、JFrame などのトップレベルコンテナーで使用するダイアログやコントロールグループをすばやく作成できます。 これらの要素は、Java コードで直接定義したコンポーネントと共存できます。
このチュートリアルでは、UI デザイナーの操作の基本を学習し、サンプルアプリケーション用の独自の GUI フォームを作成します。 演習として、タイトル、作成者、ジャンル、在庫状況などの書籍に関する情報を編集するための GUI フォームを構築します。
チュートリアルの最後には、フォームは次の例のようになります。

Swing UI Designer プラグインをインストールする
この機能は、インストールして有効にする必要がある Swing UI デザイナー(英語)プラグインに依存しています。
Ctrl+Alt+S を押して設定を開き、 を選択します。
Marketplace タブを開き、 Swing UI デザイナープラグインを見つけて、 インストール をクリックします (プロンプトが表示されたら、IDE を再起動します)。
サンプルプロジェクトのクローンを作成する
アプリケーションのソースコードは、 Swing サンプルプロジェクトを使用して UI を構築する(英語)の GitHub でホストされています。
メインメニューで へ移動します。
リポジトリの URL を指定して、 クローン をクリックします。
必要に応じて、クローンプロジェクトを新しいウィンドウで開くことに同意します。

IntelliJ IDEA は、 .form ファイルで作成した GUI フォームに関する情報を保存します。 フォームは、Java ソースファイルに関連付けて、 バージョン管理下に置くことができます。
最初のステップとして、新しい GUI フォームとそれに関連する Java クラスを作成します。
新しい GUI フォームを作成する
プロジェクト ツールウィンドウ Alt+1 で、 src.com.example.library.forms パッケージを選択し、 Alt+Insert を押して、 を選択します。

開いた 新規GUI フォーム ダイアログで、次の詳細を指定します。
フォーム名(F): 新しい GUI フォームの名前として
BookEditorを指定します。ベースレイアウトマネージャー(L): ドロップダウンから
GridLayoutManager (IntelliJ)レイアウトマネージャー(英語)を選択します。バインドされたクラスを作成する(B): フォームと一緒に関連する Java クラスを作成するオプションを選択します。
IntelliJ IDEA は、Java クラスを自動的に作成し、GUI フォームにバインドします。 バインドされたクラスは、GUI フォームの基礎となるコード表現として機能します。 これにより、コンポーネントをクラス内の対応するフィールドにリンクし、フォームの動作と機能の実装を容易にすることができます。
クラス名(C): フォームに関連付けられた Java クラスのデフォルト名をそのままにします。

OK をクリックします。
プロジェクトには現在、 BookEditor.form ファイルと BookEditor.java ファイルがあります。 BookEditor.form ファイルでは、GUI コンポーネントを配置し、そのプロパティを設定します。 BookEditor.java ファイルには、フォームを機能させるコードが含まれます。
フォームのセクション
先に進む前に、 BookEditor.form を簡単に見てみましょう。 .form ファイルを選択すると、4 つの主要なセクションで構成される UI デザイナーのビューが表示されます。

フォームワークスペース: フォーム内のコンポーネントの視覚的な表現を表示します。 IntelliJ IDEA で新しい GUI フォームを作成すると、最上位の JPanel コンポーネントがデフォルトで追加され、さらにコンポーネントを追加してフォームを構築できます。
コンポーネントツリー :デザインフォームに含まれるコンポーネントを表示し、1つ以上のコンポーネントを移動して選択できます。 現在、フォームには JPanel という 1 つのコンポーネントしかありませんが、すぐにさらにコンポーネントが追加される予定です。
プロパティインスペクター: フォームワークスペースまたは コンポーネントツリーで現在選択されているコンポーネントのプロパティを表示します。
パレット: フォームに配置できる UI コンポーネントのリストが含まれています。
次に、フォームを構築し、必要なフィールド、チェックボックス、コントロールをブックエディターに組み込みます。
まず、構築する GUI を格納するコンテナーとして機能する JPanel コンポーネントに取り組みます。
JPanel コンテナーを設定する
BookEditor.java を開き、パッケージ宣言のファイルの上部に次のコードを貼り付けます。
import javax.swing.*;BookEditor.java でも、
BookEditorクラス内に次のコードを貼り付けます。private JPanel contentPane;BookEditor.form ファイルを開きます。
コンポーネントツリー セクションで、 JPanel を選択して、コンポーネントで使用可能なプロパティを表示します。

プロパティインスペクターで、 フィールド名 プロパティの値を contentPane に設定します。

フォームに GUI コンポーネントを配置する
BookEditor.form ファイルを開きます。
パレット セクションで、 JTextField を選択し、フォームの上部セクションをクリックしてコンポーネントを配置します。
この操作を繰り返し、上から下の順に、さらに JTextField コンポーネントを 1 つ、 JComboBox コンポーネントを 1 つ、 JCheckBox コンポーネントを 1 つ追加します。
IntelliJ IDEA は、 コンポーネントツリー に追加されたコンポーネントを表示し、対応する宣言を BookEditor.java に追加します。
BookEditor.java を開きます。
BookEditorクラスを、フィールド名を変更し、BookEditorクラスを拡張した以下の内容に置き換えます。public class BookEditor extends JFrame { private JPanel contentPane; private JTextField bookNameField; private JTextField authorNameField; private JComboBox genreComboBox; private JCheckBox isTakenCheckBox; }BookEditor.form に戻ります。 BookEditor.java でフィールド名を変更すると、IntelliJ IDEA によって コンポーネントツリー にエラーが表示されます。 これらの問題を解決するには、プロパティインスペクターで、更新されたコンポーネント名を フィールド名 プロパティの値として設定します。

現在、フィールド名にはラベルが付いていないため、エンドユーザーに認識されません。 Swing ライブラリには、GUI フォームに任意のテキストラベルを追加するために使用できる特定のコンポーネント JLabel が用意されています。
チェックボックスの場合、 JCheckBox コンポーネントのプロパティでテキストを直接構成できるため、ラベルを追加する必要はありません。
テキストラベルを追加する
JLabel コンポーネントを各 JTextField および JComboBox の右側に追加します。
コンポーネントツリー の最初の JLabel を選択します。 プロパティインスペクタで、 テキスト プロパティの値を
Titleに変更します。同様の方法で、他の 2 つのラベルの名前を
作成者とGenreに変更します。コンポーネントツリー 内の JCheckBox コンポーネントを選択します。 次に、 テキスト プロパティの値として
Is unavailableを指定します。
Book エディターで、エンドユーザーが行った変更を保存したり、破棄したりできるようにしたい。 このために、 保存する ボタンと キャンセル ボタンを追加します。
ボタンを追加
JCheckBox のあるセルに VSpacer コンポーネントを追加します。 これにより、ボタン用の領域が作成され、それが 2 つの半分に均等に分割されます。
垂直スペーサーの両側に 2 つの J ボタンコンポーネントを追加します。
各ボタンの テキスト プロパティで、それぞれの名前(
キャンセルおよび保存する)を指定します。
必要な Swing コンポーネントがすべて GUI フォームに配置されたため、中間結果を確認し、実行時にフォームがどのように表示されるかを確認しましょう。
GUI フォームをプレビューする
GUI フォームを右クリックし、コンテキストメニューから プレビュー を選択します。

IntelliJ IDEA は フォームプレビュー ダイアログを表示します。 プレビューモードでは、実行時と同じように、ボタンをクリックしたり、チェックボックスを選択したり、テキストを入力したりすることができます。

この段階では、GUI フォームはまだ未完成です。 余白を調整し、推奨するウィンドウサイズを設定することで、外観と操作性を改善しましょう。
GUI フォームの外観と操作感を調整する
コンポーネントツリー 内の JPanel コンテナーを選択します。
コンテナーの上、下、左、右の余白を構成するには、 余白 プロパティグループを使用します。 各余白の値を
10に設定します。
フォームの推奨サイズを構成するには、 高度なプロパティを表示する(S) チェックボックスをオンにして、 preferredSize プロパティグループを見つけて展開します。 width プロパティの値を
400に設定し、 heightプロパティの値 を200に設定します。もう一度プレビューを実行して結果を確認します。

フォームに機能を追加する
GUI フォームの準備ができたため、 BookEditor.java のコンテンツを編集して機能させることができます。 このチュートリアルのフォームの機能は準備されており、 src/com/example/library/forms/BookEditorExample にある BookEditorExample.java で利用できます。
BookEditor.java のすべての内容を BookEditorExample.java の内容に置き換えます。
BookEditor.java では、クラス宣言とパブリックメソッド宣言で、
BookEditorExampleの 2 つのインスタンスの名前をBookEditorに変更します。Main.java を開いて アプリケーションを実行します。
フォームに入力した書籍の詳細がターミナルに印刷されます。
トラブルシューティング
問題: 外部ビルドシステム (Maven/Gradle) を使用して GUI デザイナーフォームを含むプロジェクトをビルドすると、フォームがコンパイルされず、コードが機能せず、コンポーネントにアクセスしようとすると
NullPointerExceptionで失敗します。考えられる解決策については、 Gradle または Maven 使用時の GUI フォームコンパイルを構成する方法(英語)サポート記事を参照してください。