Yet Another Swing - SwingX 第2回 Swingには存在しないコンポーネント前回から、もう一つのSwingであるSwingXプロジェクトについて紹介しています。 簡単におさらいすると、SwingXプロジェクトはSwing Labsプロジェクトのサブプロジェクトとして活動を行っているプロジェクトで、Swingコンポーネントの拡張や、独自コンポーネントなどを提供しています。 前回は、独自コンポーネントのJXBusyLabelを紹介しました。今回は引き続きSwingXプロジェクトの独自コンポーネントを紹介していきます。 今回紹介するコンポーネントは以下の3種類です。
これらのクラスはいずれもorg.jdesktop.swingxパッケージで定義されています。 JXTaskPaneJXTaskPaneは、Flash Platformなどではアコーディオンと呼ばれているコンポーネントです。通常は折りたたまれており、タイトル部分をクリックすることで下に展開されて内容を参照できます。 JXTaskPaneクラスは折りたまれる一つのペインを表します。そして、JXTaskPaneクラス専用のコンテナがJXTaskPaneContainerクラスです。 では、実際に使ってみましょう。
サンプルのソース (ダウンロードできます)
・TaskPaneDemo.java まずはJXTaskPaneContainerオブジェクトに、JXTaskPaneオブジェクトを貼ってみます。
リスト●
タスクペインを作成しているのがcreateTaskPaneメソッドです。 はじめに、コンテナであるJXTaskPaneContainerオブジェクトを生成します。オレンジで示したようにデフォルトコンストラクタを使用して、オブジェクトを生成します。 次にJXTaskPaneオブジェクトを生成します(赤字部分)。コンストラクタの引数である文字列がタスクペインのタイトルとして表示されます。ここではFileとOptionという二つのタスクペインを生成しています。 また、ここでは使用していませんが、アイコンを表示することも可能です。 次に、生成したJXTaskPaneオブジェクトを、addメソッドを使用してJXTaskPaneContainerオブジェクトに貼るだけです(青字部分)。 なお、createTaskPaneメソッドを@SuppressWarningsアノテーションで修飾しているのは、JXTaskPaneContainerクラスのaddメソッドが非推奨のためです。 JXTaskPaneContainerクラスはJXTaskPaneクラスを引数に取るaddメソッドを定義していました。しかしJXTaskPaneContainerクラスのスーパークラスであるjava.awt.Containerクラスにはjava.awt.Componentクラスを引数に使用するaddメソッドが定義されています。 一般的にはContainerクラスのaddメソッドを使用するので、JXTaskPaneContainerクラスもそれにならい、JXTaskPaneクラスを引数に取るaddメソッドは非推奨になりました。 もちろん、@SuppressWarningsアノテーションを使わずに、JXTaskPaneオブジェクトをConponentクラスにキャストする方法でも、警告を抑制することができます。 では、コンパイル、実行してみましょう。 前回説明したように、SwingXプロジェクトのコンポーネントを使用するにはクラスパスにswingx-core-X.jarファイルを追加します(Xはバージョンを示します。原稿執筆時点でのバージョンは1.6.2です)。 実行結果を図1、図2に示します。 図1が初期状態でタスクペインが展開されている状態です。Fileのタイトル部分をクリックして折りたたんだ状態にしたのが、図2です。 ![]() 図1●TaskPaneDemoの実行結果
![]() 図2●Fileペインを閉じた場合
実際に実行させてみればわかりますが、タスクペインの展開や閉じる動作はアニメーション化されており、スムーズに動作します。
>>タスクペインへの項目の追加
連載新着連載目次へ >>
|