プログラミング応用b 第13回 『GUIその2 (AWT/Swingによるイベント処理)』 |
【コンポーネントの実装・継承関係】
ここで,JavaにおけるGUIコンポーネントを表すクラスや各種インタフェイスの主な実装・継承関係をFig. 5に
紹介しておきます。スーパークラスが書かれていないクラスのスーパークラスはObjectです。
Fig. 5 の右下に記載されている凡例にあるように,各クラスやインタフェイスの左下にある三角がグレイのもの
がAWT所属のもの,黒いものSwing所属のものです。あまり重要でないいくつかのクラス・インタフェイスおよび
実装・継承関係は省いていますが,APIの参照時などに役に立つでしょう。
(PDF版はこちら。印刷して手元に置いておくと,自分でプログラムを書くときに参考になるでしょう)
Fig.5では,クラス・インタフェイスをいくつかのグループにわけています。このグループ
分けは便宜的なものですが,把握していると Fig.5 をより活用できるでしょう。
まず,基幹コンポーネント部分が,Fig.5の上部にある①の部分です。すべてのコンポー
ネントのスーパークラスComponentがあり,そのサブクラスとして,すべてのコンテナの
スーパークラスであるContainerクラスがあります。そのサブクラスが,Swing系コンポー
ネントのスーパークラスJComponentです。この3つのクラスはその継承関係とともに
是非覚えておきましょう。特にSwing系コンポーネント一般を表すJComponentがContainer
のサブクラスと言うことは,Swing系コンポーネントは基本的に「他のコンポーネントを含む
事ができるContainer」の一種である,ということです。
Fig.5-①のすぐ右下にある②が,Containerのサブクラス群としてのウィンドウ系コン
ポーネント群です。まず,ContainerのサブクラスとしてWindowがあり,そのサブクラスと
して,Frame,Dialog,JWindowがあります。Swing系ウィンドウのJFrameとJDialogはそれ
ぞれ,FrameとDialogのサブクラスとなっています。JComponentクラスのサブクラスJInternalFrame
は,Windowのサブクラスではありませんが,ウィンドウの内部に作成される擬似的なウィン
ドウです。
ウィンドウ系コンポーネントの左にあるFig.5-③が,アップレット・AWT系パネルコン
ポーネント群です。AWT版のパネルであるPanelや,ScrollPane,ScrollaPaneAdjustableと
いうAWT版ペインのクラス,そして,古いバージョンのアップレットjava.applet.Appletと
そのサブクラスとしてのSwing版アップレットのJAppletがあります。
アップレットは,ウェブブラウザ上で実行できるアプリケーションの一形態で,読者の皆さ
んならご存じでしょう。ごらんのように,Applet,JAppletは,AWT版パネルであるPanelサ
ブクラスとして定義されているのです。
そして,Fig.5-②のJWindow,JFrame,JDialog,JInternalFrame,Fig.5-③のJApplet
の5つのクラスは,Fig.5-②のRootPaneContainerインタフェイスを実装しています。
RootPaneContainerは,前回お話ししたSwing系のウィンドウが持っているコンテントペイン
を返すメソッドgetContentPane( )を定義しています。つまり,RootPaneContainerを実装し
ているこれら5つのクラスこそが,コンテントペインを持っているクラスであることになります。
アップレット・AWT系パネルコンポーネント群の下のFig.5-④が,AWT系メニューコン
ポーネント群です。さらにその下のFig.5-⑤が,AWT版の一般コンポーネント群です。だい
たい,以上でAWT系コンポーネントはすべてカバーできています。残りは全部Swing系コンポ
ーネントです。
Fig.5の右側にあるのが,Swing系メニューコンポーネント群です。Fig.5の中央には,Swing
系ボタンコンポーネント群(fig.5-⑦),とSwing系ペインコンポーネント群(Fig.5-⑧)があり
ます。Fig.5の中央やや下には,Swing系の一般コンポーネント群(Fig.5-⑨)があります。その
下には,Swing系コンボボックスコンポーネント群(Fig.5-⑩)があります。Fig.5の下端には,
Swing系テキストコンポーネント群(fig.5-⑪),Swing系テーブルコンポーネント群(fig.5-⑫)
があります。
なお,Fig.5の左下にあるFig.5-⑬は,次節で説明するイベント関係のインタフェイス群
です。