Swing Application Framework 入門
このガイドでは、NetBeans IDE 6.0 での Swing Application Framework のサポートについて説明します。
目次
このチュートリアルに従うには、次のソフトウェアとリソースが必要です。
入門: NetBeans IDE 6 での Swing Application Framework
Swing Application Framework は、小規模から中規模の Java デスクトップアプリケーションの作成と保守を簡素化する手軽なフレームワークです。このフレームワークは、次の内容を実現する構造をサポートする Java クラスライブラリで構成されています。
- セッション間の状態の記録。
- バックグラウンドタスクとしての実行やブロック動作の指定といったアクションの容易な管理。
- Bean プロパティーのリソース注入など、高度なリソース管理。
IDE は、Swing Application Framework に基づくアプリケーションの開発を次の方法でサポートします。
- メインフレームワーク機能のスケルトン実装を含む Java デスクトップアプリケーションプロジェクトテンプレートの提供。このテンプレートにより、次の 2 つのシェルのいずれかを選択できます。
- 基本アプリケーション。基本的なフレーム、一部のサンプルメニュー項目、ステータスバー、アクションおよびリソースの管理機構を提供します。
- データベースアプリケーション。「基本アプリケーション」シェルの全機能に加え、作成、読み取り、更新、および削除機能を備えた単純なデータベースアプリケーションに必要なすべての機能を提供します。この使用方法の詳細は、「Java デスクトップデータベースアプリケーションの構築」参照してください。
- IDE の GUI ビルダーへのフレームワーク機能の統合。その他の Swing アプリケーションと同じように、IDE で Swing Application Framework アプリケーションをデザインできます。
- アプリケーションの UI テキストやその他のリソースの .properties ファイル内への生成。
- アクションの特別なプロパティーエディタの提供。これにより、アクションをキーボードアクセラレータ、テキスト、およびツールチップに関連付けることができます。また、アクションをいつ選択または有効にするかのプロパティーを設定したり、アクションを非同期に実行するよう設定することもできます。
- IDE にアプリケーションを構築するときに、Swing Application Framework ライブラリをプロジェクトの dist/lib フォルダに自動的にパッケージ化します。
注: NetBeans プラットフォームはアプリケーションフレームワークとしても使用できます。これに関する Swing Application Framework と NetBeans プラットフォームの主な違いは、スコープです。Swing Application Framework は軽量で、容易に始めることができます。NetBeans プラットフォームは機能に富んでいるため、大規模なアプリケーションや拡張可能なアプリケーションに適しています。NetBeans プラットフォームに基づくアプリケーション開発の詳細は、「NetBeans プラットフォームの学習」を参照してください。
Swing Application Framework に基づくアプリケーションの作成
IDE による Swing Application Framework のサポートを最大限に活用するには、Java デスクトップアプリケーションプロジェクトテンプレートを使用します。
新しい Swing Application Framework アプリケーションを作成する
- 「ファイル」>「新規プロジェクト」を選択します。
- 「Java」カテゴリを選択し、「Java デスクトップアプリケーション」テンプレートを選択します。「次へ」をクリックします。

- ウィザードの「名前と場所」ページで、必要なフィールドを入力します。

「基本アプリケーション」シェルを選択した場合は、「完了」をクリックしてコンピュータ上にプロジェクトを作成し、「プロジェクト」ウィンドウおよび「ファイル」ウィンドウでプロジェクトを開きます。
「データベースアプリケーション」シェルを選択した場合は、「次へ」をクリックして、データベース表、およびデータベースのマスター/詳細ビューの構成を指定します。
生成されるファイルには次が含まれます。
- main() メソッド、フレームワークの startup メソッド、およびその他のユーティリティーメソッドを含むアプリケーションクラス。このクラスはフレームワークの SingleFrameApplication クラスを拡張します。
- アプリケーションのメインウィンドウとして機能するビュークラス。このクラスはフレームワークの FrameView クラスを拡張し、JPanel をカプセル化します。このクラスは GUI ビルダーで編集可能です。
- アプリケーションの「製品について」ウィンドウのサンプル。
- アプリケーションのリソースを保持する .properties ファイル。
アクションの作成と構成
Swing Application Framework には、アクションの定義および管理に役立つサポートが用意されています。
Java チュートリアルから引用すると、「アクションオブジェクトは、アクションイベント処理だけでなく、ツールバーボタン、メニュー項目、一般的なボタン、およびテキストフィールドなどのアクションイベント起動コンポーネントの状態の処理を集中化するアクションリスナーです。アクションが処理できる状態には、テキスト、アイコン、ニーモニック、有効化、および選択されている状態があります。」
フレームワークでは、アクションの actionPerformed メソッドの実装として機能するメソッドをマーク付けするために、@Action 注釈を使用します。フレームワークは、このメソッドを使用して特定のアクションを実行します。また、アクションの有効状態、アクションのブロック動作、およびアクションをバックグラウンドで実行するかどうかなどを決定する、アクションのさまざまな属性を指定することもできます。
IDE では、「アクションを設定」ダイアログを使用して、注釈や属性を含むアクションのコードを生成できます。「アクションを設定」ダイアログでは、次の作業を実行できます。
- アクションを使用するようにコンポーネントを設定します。
- スケルトンアクションを作成します。
- ビジュアルコンポーネントに表示される名前、ツールチップテキスト、アイコン、およびキーボードショートカットなどの、アクションのユーザーインタフェースプロパティーを設定します。
- アクションが有効かどうかを示す Boolean 型のプロパティーを作成します。
- アクションが選択されているかどうかを示す Boolean 型のプロパティーを作成します。このオプションは、ラジオボタンなど、「selected」プロパティーを持つ、メニュー以外のコンポーネントにのみ適用されます。
- アクションをバックグラウンドタスクとして実行するよう設定します。
- アクションが完了するまでその他のアクションをブロックするよう設定します。
「アクションを設定」ダイアログを開くには、次のいずれかを実行します。
- コンポーネントを右クリックし、「アクションを設定」を選択します。

- コンポーネントを選択し、「プロパティー」ウィンドウで「action」プロパティーの隣の省略符号ボタン (...) をクリックします。

「アクションを設定」ダイアログには次のフィールドがあります。
- action プロパティーを設定。さまざまなプロパティーエディタから、「action」プロパティーを設定するためのエディタを選択できます。次のいずれかを選択できます。
- デフォルトエディタ。Swing Application Framework の機能に基づくコードの生成をビジュアルにサポートします。
- 既存のコンポーネントからの値。プロパティーの値を取得するコンポーネントを指定できます。
- カスタムコード。プロパティーの設定用のコードを手動で書き込むためのテキスト領域を提供します。
このヘルプトピックでは、デフォルトエディタのオプションについてのみ説明します。
- アクション。コンポーネントに割り当てるアクションをコンボボックスから選択します。
@Action 注釈の付いたメソッドのみがコンボボックスに一覧表示されます。この注釈が付いていないメソッドを使用する場合は、ダイアログを終了して、そのメソッドに注釈を追加してください。
アクションのメソッドを記述していない場合は、「新規アクションを作成」を選択します。これにより、「アクションのメソッド」フィールドにメソッド名を入力できます。また、コンポーネントに表示するテキストを「テキスト」フィールドに入力します。「了解」をクリックしてダイアログを終了すると、スケルトンアクションが作成されます。
注: コンポーネントにアクションを割り当てると、「アクションを設定」ダイアログでの入力内容に従って、そのコンポーネントの「text」、「toolTipText」、および「icon」プロパティーが設定されます。以前にコンポーネントに対してプロパティーを設定していた場合は、「アクションを設定」ダイアログで指定した内容によって置き換えられます。ただし、コンポーネントのプロパティーシートに戻って、そのコンポーネントの値をカスタマイズすることができます。実行中のアプリケーションでは、コンポーネント固有のプロパティーが使用されます。
- アクションのクラス。新規アクションを作成している場合は、このコンボボックスを使用して、アクションを配置するクラスを選択します。
- アクションのメソッド。新規アクションを作成している場合は、このテキストフィールドを使用して、生成するアクションメソッドの名前を入力します。
- バックグラウンドタスク。選択すると、アクションがバックグラウンドで実行されます。アクションの完了に時間がかかり、アクションの実行中にユーザーが UI の別の作業を実行できるようにする場合に便利です。
- 「属性」の「基本」タブ
- テキスト。ボタンやメニュー項目などのビジュアルコンポーネントのアクションに使用するテキストを入力します。
- ツールチップ。アクションに関連付けられたコンポーネント上にユーザーがマウスを移動させた場合に表示されるテキストを入力します。
- アクセラレータ。アクションのキーボードショートカットを入力します。使用するショートカットを指定するには、「文字」フィールドを選択し、実際にショートカットを使用するときと同じようにショートカットを入力します。Ctrl や Shift などの修飾キーを使用すると、そのチェックボックスが自動的に選択されます。
- アイコン。必要に応じて、アクションにアイコンを関連付けます。「小さいアイコン」ボタンと「大きいアイコン」ボタンを使用して、使用するアイコンに移動します。
- 「属性」の「詳細」タブ
- 有効なプロパティー。必要に応じて、Boolean 型の Bean プロパティーを選択します。この値によって、アクションが有効かどうかが決まります。このようなプロパティーを作成していない場合は、テキストフィールドにプロパティーの名前を入力します。「了解」をクリックしてダイアログを終了すると、スケルトンプロパティーが作成されます。
- 選択したプロパティー。必要に応じて、Boolean 型の Bean プロパティーを選択します。この値によって、アクションが選択されているかどうかが決まります。このオプションは、JRadioButton、JToggleButton など、「selected」 Bean プロパティーを持つコンポーネントにのみ適用されます。「了解」をクリックしてダイアログを終了すると、スケルトンプロパティーが作成されます。
- ブロック化タイプ。タスクの実行中、ユーザーによるユーザーインタフェースの操作をブロックできます。ドロップダウンリストの項目の選択によって、ブロックの適用レベルを設定できます。たとえば、アプリケーション全体をブロックしたり、1 つのウィンドウやコンポーネントのみをブロックしたりできます。ブロック化タイプは、バックグラウンドタスクとして指定したアクションにのみ適用されます。
- ブロック化ダイアログのタイトル。タスクが完了していないことをユーザーに警告するダイアログのタイトルを指定します。
- ブロック化ダイアログのメッセージ。タスクが完了していないことをユーザーに警告するダイアログに表示するテキストを指定します。
注:
- デフォルトでは、アクションのリソースは .properties ファイルに保存されます。このファイルは、アクションの .java ファイルと同じ名前です。プロパティーキーは、アクション名から派生します。影響のある属性は、テキスト、ツールチップ、アクセラレータ、小さいアイコン、大きいアイコン、ブロック化タイトル、およびブロック化メッセージです。
- 「アプリケーションアクション」ウィンドウで、プロジェクト内のアクションの概要をすべて表示できます。「アプリケーション」ウィンドウを開くには、「ウィンドウ」>「その他」>「アプリケーションアクション」を選択します。
リソース管理
Swing Application Framework を使用すると、アプリケーションのリソースを簡単に扱うことができ、より多くの内容をリソースバンドルに保存できます。
リソースと言えば、アプリケーションで使用されるオブジェクトのことを指しますが、.java ファイルではそうではありません。Java プログラムでの共通のリソースには、画像ファイルおよびデータベースが含まれます。文字列、色、フォントなど、その他のオブジェクトもリソースとして扱います。文字列をリソースとして扱うと、アプリケーションのローカライズがより簡単になります。その他のオブジェクトをリソースとして扱うと、Java コードを変更してアプリケーションを再構築することなしに、それらのオブジェクトの値を変更できます。
一般的な Swing Application Framework アプリケーションには、アプリケーションレベルとクラスレベルの両方のリソースバンドルがあります。クラスレベルのリソースバンドルは、拡張子が .properties である以外は、対応する .java クラスと同じ名前です。これらのバンドルはすべて ResourceMap オブジェクトによってカプセル化されます。
一部のアプリケーションレベルの標準リソース (アプリケーション名など) は「プロジェクトプロパティー」ダイアログで編集できます。「プロジェクトプロパティー」ダイアログに含まれていないアプリケーションレベルのリソース (ユーザー定義のリソースなど) は、メインアプリケーションクラスの名前に対応した .properties ファイルで編集できます。
「プロジェクトプロパティー」ダイアログを開くには、プロジェクトのノードを右クリックして「プロパティー」を選択します。アプリケーションプロパティーが「アプリケーション」パネルおよび「デスクトップアプリケーション」パネルに表示されます。
Java デスクトップアプリケーションプロジェクトテンプレートからアプリケーションを起動すると、デフォルトで、UI テキストなどの Swing Application Framework のリソース管理規則を使用してコードが生成されます。設定したコンポーネントプロパティーの値も、リソースとして保存されます。
リソースを処理するコードの生成方法を設定できます。
特定のフォームの構成コードの生成方法を設定するには、次の手順に従います。
- フォームを開いてデザインビューに切り替えます。
- 「インスペクタ」ウィンドウでルートフォームノードを選択します。

- 「プロパティー」ウィンドウで、「自動リソース管理」ドロップダウンリストから次のいずれかを選択します。
- オフ。プロパティー値はすべて .java ファイルにハードコードされます。
- 国際化。すべての文字列に対してリソースコードが生成され、文字列値は .properties ファイルに保存されます。
- すべてのリソース。すべての文字列、色、フォント、およびアイコンに対してリソースコードが生成されます。このプロパティーの値は .properties ファイルに保存されます。
- リソース + 注入。実行時に .properties ファイルからアプリケーションにリソースの値を注入するようにコードが生成されます。
特定のプロパティーの値を .properties ファイルに保存したくない場合は、「プロパティー」ウィンドウでプロパティーの隣の省略符号ボタン (...) をクリックします。次に、「リソースとして定義」プロパティーの選択を解除します。
フレームワークプロジェクトのサンプル
フレームワークの動作方法の例を見る場合は、IDE でフレームワークベースのいくつかのサンプルプロジェクトを参照できます。Mars Rover Viewer と Document Editor の両方が Swing Application Framework を使用します。これらのサンプルは、Swing Application Framework ライブラリに含まれる、2 つのサンプルに基づいています。ただし、これらは IDE の GUI ビルダーを使用して再作成されているので、実行するには、IDE のビジュアルデザインツールが必要です。
IDE でこれらのサンプルのいずれかを開くには、次の手順に従います。
- 「ファイル」>「新規プロジェクト」を選択します。
- 「サンプル」>「Java」カテゴリを選択します。Mars Rover Viewer プロジェクトまたは Document Editor プロジェクトを選択します。
- ウィザードの残りの手順を完了します。
関連項目
IDE の GUI ビルダーの一般的な使用方法については、GUI 構築入門を参照してください。
「Java デスクトップアプリケーション」プロジェクトテンプレートを使用してマスター/詳細ビューを備えたデータベースアプリケーションを構築する方法については、「Java デスクトップデータベースアプリケーションの構築」を参照してください。
Swing Application Framework についての詳細は、https://appframework.dev.java.net/intro/index.html および http://java.sun.com/developer/technicalArticles/javase/swingappfr/ を参照してください。
NetBeans IDE の GUI ビルダーを使用する際のヒントについては、GUI エディタの FAQ と Patrick Keegan のブログを参照してください。
IDE から Swing Application Framework の API ドキュメントディレクトリにアクセスするには、「ヘルプ」>「Javadoc 参照」>「org.jdesktop.application」(Swing Application Framework [JSR-296]) を選択してください。フレームワーククラスのドキュメントは、IDE のソースエディタでフレームワーククラスまたはクラスメンバーを右クリックし、「Javadoc を表示」を選択して表示することもできます。