チュートリアル: Swing を使用して UI を構築する
IntelliJ IDEA の UI デザイナープラグインを使用すると、Swing ライブラリコンポーネントを使用して、アプリケーションのグラフィカルユーザーインターフェース (GUI) を作成できます。UI デザイナーを使用すると、JFrame などのトップレベルコンテナーで使用するダイアログやコントロールグループをすばやく作成できます。これらの要素は、Java コードで直接定義したコンポーネントと共存できます。
このチュートリアルでは、UI デザイナーの操作の基本を学習し、サンプルアプリケーション用の独自の GUI フォームを作成します。演習として、タイトル、作成者、ジャンル、在庫状況などの書籍に関する情報を編集するための GUI フォームを構築します。
チュートリアルの最後には、フォームは次の例のようになります。
UI デザイナープラグインを有効にする
この機能は、IntelliJ IDEA にデフォルトでバンドルされ有効になっている UI デザイナープラグインに依存しています。関連する機能が利用できない場合は、プラグインを無効にしていないことを確認してください。
Ctrl+Alt+S を押して設定を開き、
を選択します。インストール済みタブを開き、UI デザイナープラグインを見つけて、プラグイン名の横にあるチェックボックスを選択します。
サンプルプロジェクトのクローンを作成する
アプリケーションのソースコードは、Swing サンプルプロジェクトを使用して UI を構築する (英語)GitHub でホストされています
メインメニューで、
に移動します。リポジトリの URL を指定して、クローンをクリックします。
必要に応じて、クローンプロジェクトを新しいウィンドウで開くことに同意します。
IntelliJ IDEA は、.form ファイルで作成した GUI フォームに関する情報を保存します。フォームは、Java ソースファイルに関連付けて、バージョン管理下に置くことができます。
最初のステップとして、新しい GUI フォームとそれに関連する Java クラスを作成します。
新しい GUI フォームを作成する
プロジェクトツールウィンドウ Alt+1 で、src.com.example.library.forms パッケージを選択し、Alt+Insert を押して、 を選択します。
開いた新規 GUI フォームダイアログで、次の詳細を指定します。
フォーム名 : 新しい GUI フォームの名前として
BookEditor
を指定します。ベースレイアウトマネージャー : ドロップダウンから
GridLayoutManager (IntelliJ)
レイアウトマネージャー(英語)を選択します。バインドされたクラスを作成する : フォームと一緒に関連する Java クラスを作成するオプションを選択します。
IntelliJ IDEA は、Java クラスを自動的に作成し、GUI フォームにバインドします。バインドされたクラスは、GUI フォームの基礎となるコード表現として機能します。これにより、コンポーネントをクラス内の対応するフィールドにリンクし、フォームの動作と機能の実装を容易にすることができます。
クラス名 : フォームに関連付けられた 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 つのラベルの名前を
Author
とGenre
に変更します。コンポーネントツリー内の JCheckBox コンポーネントを選択します。次に、テキストプロパティの値として
Is unavailable
を指定します。
ブックエディターに、エンドユーザーが行った変更を保存および破棄する機能を持たせます。そのために、保存ボタンとキャンセルボタンを追加します。
ボタンを追加
JCheckBox のあるセルに VSpacer コンポーネントを追加します。これにより、ボタン用の領域が作成され、それが 2 つの半分に均等に分割されます。
垂直スペーサーの両側に 2 つの J ボタンコンポーネントを追加します。
各ボタンのテキストプロパティで、それぞれの名前(
Cancel
およびSave
)を指定します。
必要な Swing コンポーネントがすべて GUI フォームに配置されたため、中間結果を確認し、実行時にフォームがどのように表示されるかを確認しましょう。
GUI フォームをプレビューする
GUI フォームを右クリックし、コンテキストメニューからプレビューを選択します。
IntelliJ IDEA はフォームプレビューダイアログを表示します。プレビューモードでは、実行時と同じように、ボタンをクリックしたり、チェックボックスを選択したり、テキストを入力したりすることができます。
この段階では、GUI フォームはまだ未完成です。余白を調整し、推奨するウィンドウサイズを設定することで、外観と操作性を改善しましょう。
GUI フォームの外観と操作感を調整する
コンポーネントツリー内の JPanel コンテナーを選択します。
コンテナーの上、下、左、右の余白を構成するには、margins プロパティグループを使用します。各余白の値を
10
に設定します。フォームの推奨サイズを構成するには、高度なプロパティを表示するチェックボックスをオンにして、preferredSize プロパティグループを見つけて展開します。width プロパティの値を
400
に設定し、height プロパティの値を200
に設定します。もう一度プレビューを実行して結果を確認します。
GUI フォームの準備ができたため、BookEditor.java のコンテンツを編集して機能させることができます。このチュートリアルのフォームの機能は準備されており、BookEditorExample.java で利用できます。
フォームに機能を追加する
BookEditor.java のすべての内容を BookEditorExample.java の内容に置き換えます。
BookEditor.java では、クラス宣言とパブリックメソッド宣言で、
BookEditorExample
の 2 つのインスタンスの名前をBookEditor
に変更します。Main.java を開いてアプリケーションを実行します。
フォームに入力した書籍の詳細がターミナルに印刷されます。
関連ページ:
ファイルを Git に追加し、変更を追跡する
Git にファイル追加コミットツールウィンドウを開きます。を押すか、コンテキストメニューから VCS に追加を選択して、バージョン管理外ファイル変更リスト内のファイルをバージョン管理下に置きます。変更リスト全体を追加することも、個別のファイルを選択することもできます。プロジェクトで Git 統合を有効にしている場合、IntelliJ IDEA は、新しく作成された各ファイルをバージョン管理下に追加することを提案します。この動作は、の設定ダイアログで変更できます。特定のファイルを常にバージョン管...
フォームワークスペース
フォームワークスペースは、フレームの中央部分を占めるフォームの一部です (ツールウィンドウのレイアウトと表示がデフォルトであると仮定)。背景はデフォルトで白です。新しいフォームを作成すると、ワークスペースに JPanel コンポーネントが追加され、灰色の四角形として表示されます。最初にパレットでコンポーネントをクリックし、次にフォームワークスペースのペイン内をクリックすると、このコンテナーにコンポーネントを配置できます。フォームワークスペースには、クリップボード、レイアウトアクションなどにアクセ...
コンポーネントツリー
コンポーネントツリーは、設計フォームに含まれるコンポーネントを表示し、1 つ以上のコンポーネントに移動して選択できるようにするフォームの一部です。ここで 1 つ以上のコンポーネントを選択すると、設計フォームに並行して反映され、その逆も同様です。コンポーネントツリー階層は包含を表します。展開可能なノードは、ある種のコンテナーを表します。コンテナーのサブノードは、UI コンポーネント (ネストされたコンテナーを含む) を表します。ルートノードはフォームを表します。これは、実際には、UI デザイナーで...
不動産インスペクション官
プロパティインスペクターは、フォームワークスペースで現在選択されているコンポーネントのプロパティ、またはコンポーネントが存在しないか何も選択されていない場合はフォーム自体のプロパティを表示するフォームの一部です。このセクションでは、プロパティのグループ、コンテキストメニューコマンド、エディターのタイプに関する情報を確認します。プロパティインスペクターには、次の図に示すように 2 つのプロパティグループがあります。上のグループプロパティインスペクタの上部にある網掛けのプロパティは IntelliJ...
パレット
コンポーネントパレットは、フォームワークスペースの隣のフレームの右側にデフォルトで表示されるツールウィンドウです。これには、フォーム上に視覚的に配置できる UI コンポーネントが含まれています。パレットのデフォルトのグループには、必要に応じてフォーム上に配置できる Swing ユーザーインターフェースコンポーネントのセットが含まれています。Swing グループには、コンポーネント間のスペースを定義するためにフォーム上に配置できる水平および垂直スペーサーもあります。(これらは、スペーサーが配置され...
アプリケーションを実行する
プロジェクト / モジュールに SDK のセットアップがある場合は、IntelliJ IDEA から直接アプリケーションを実行できます。簡単な方法:エディターから実行プログラムにパラメーターを渡さず、プログラムを開始する前に特定のアクションを実行する必要がない場合は、エディターから直接実行できます。クラス宣言の近くのガターでクリックし、実行を選択します。現在のファイルを実行するツールバーの専用オプションを使用して、単一のファイルを実行できます。実行ボタンとデバッグボタンがアクティブになり、現在...