コンテナとコンポーネント

広告

Swingで登場するコンテナなコンポーネントについて簡単に確認していきます。

Swingを使ったプログラムではベースとなるウィンドウを作成します。そしてウィンドウの中に様々な部品を追加していくことになります。そこでまずはベースとなるウィンドウを作成しなければいけませんが、Swingではフレーム、ダイアログ、アプレットの3種類を大元のウィンドウとして利用することができます。

フレームはJFrameクラス、ダイアログはJDialogクラス、アプレットはJAppletクラスで定義されており、こららのクラスからオブジェクトを作成することで土台が作成されます。これらはContainerクラスのサブクラスとして定義されています。Swingでは他のコンポーネントを追加することできるオブジェクトをコンテナと呼んでおり、特にこの3つのクラスのオブジェクトはトップレベルコンテナと呼ばれます。

下記はトップレベルコンテナの一つであるJFrameクラスのオブジェクトを作成しています。

JFrame frame = new JFrame();

コンテナとコンポーネント

コンポーネント

トップレベルコンテナを作成したら、次にコンポーネントを作成してトップレベルコンテナに追加していきます。コンポーネントはJComponentクラスのサブクラスとして定義されており、ボタンやラベルなど用途に応じて数多くのクラスが定義されています。

例えばコンポーネントの一つでありボタンを作成するためのクラスであるJButtonクラスのオブジェクトを作成してフレームに追加するには次のように記述します。

JFrame frame = new JFrame();

JButton button = new JButton();
frame.add(button);

Swingのアプリケーションではこのようにコンテナを作成し、部品となるコンポーネントを追加していくことになります。

なお全てのコンポーネントの親クラスであるJComponentクラスもContainerクラスのサブクラスとなっています。その為、コンポーネントの中には他のコンポーネントを追加することできるコンテナとしての機能を持つものもあります。(ただしトップレベルコンテナにはなれませんので、アプリケーションの大元としては使う事ができません)。

例えばパネルを作成するためのクラスであるJPanelでは他のコンポーネントを追加することができます。

JFrame frame = new JFrame();

JPanel panel = new JPanel();

JButton button = new JButton("O.K.");
panel.add(button);

frame.add(panel);

上記では作成したパネルにボタンを追加し、そしてボタンが追加されるパネルをフレームに追加しています。

コンテナとコンポーネント

このようなコンテナとしての機能を持つコンポーネントは、他のコンポーネントにスクロール機能を付けるものや、タブによって表示するコンポーネントを切り替える機能を持つものなどがあります。

( Written by Tatsuo Ikura )