Previous | Next | Trail Map | Creating a User Interface | Java UI の概説


コンポーネントの階層

このプログラム例 (上記) はコンポーネントの階層にいくつかのレベルをもっている。 それぞれのレベルの親は (コンポーネント から継承する) Container である。 以下に階層の図を示す。

                         a Frame
                             |
                            ...
                             |
                        a Converter
                             |
           ----------------------------------
           |                                |
 a ConversionPanel (metricPanel)  a ConversionPanel (usaPanel)
           |                                |
   -------------------              -------------------
   |       |         |              |       |         |
a Label    |      a Choice       a Label    |      a Choice
           |                                |
     --------------                  --------------
     |            |                  |            |
a TextField  a Scrollbar        a TextField  a Scrollbar

説明

階層の頂点は、プログラムを表示するウィンドウ (Frame インスタンス) である。 プログラム例がアプリケーションとして動作するときは、Frame はプログラムのmain() メソッドで作成される。 アプレットとして動作するときは、ブラウザか他の Applet ビューワーのウィンドウ が Frame となる。

Frame の下に、Converter オブジェクトがある。これは Applet から継承し、したが ってこれは Container である (具体的には Panel である)。 アプレットが表示されるビューワーによっては、Converter オブジェクトと コンポーネント 階層の頂点である Frame との間に 1 つ以上の Container があることが ある。

Converter オブジェクトのすぐ下には 2 つの ConversionPanel がある。 これらを Converter の下に置くためのコードを示す。

public class Converter extends Applet {
    . . .
    public void init() {
        . . . //2 つの ConversionPanel、
        . . . //metricPanel と usaPanel を作成する
        add(metricPanel);
        add(usaPanel);
    }

それぞれの ConversionPanel は、Label、TextField、Scrollbar、Choice という 4 つの子をもっている。子を追加するコードを示す。

class ConversionPanel extends Panel {
    . . .
    ConversionPanel(Converter myController, String myTitle, Unit myUnits[])
{
        . . .
        //ラベルの追加
        Label label = new Label(title, Label.CENTER);
        //...このコンポーネントに GridBagConstraints をセットする...
        gridbag.setConstraints(label, c);
        add(label);

        //テキストフィールドの追加
        textField = new TextField("0", 10);
        //...このコンポーネントに GridBagConstraints をセットする...
        gridbag.setConstraints(textField, c);
        add(textField);

        //ポップアップリスト (Choice) の追加
        unitChooser = new Choice();
        //...Choice を初期化する...
        //...このコンポーネントに GridBagConstraints をセットする...
        gridbag.setConstraints(unitChooser, c);
        add(unitChooser);

        //スライダの追加
        slider = new Scrollbar(Scrollbar.HORIZONTAL, 0, 100, min, max);
        //...このコンポーネントに GridBagConstraints をセットする...
        gridbag.setConstraints(slider, c);
        add(slider);
    }

GridBagConstraints は、GridBagLayout (この Panel のレイアウトマネージャ) に 対し、特定のコンポーネントをどのように配置するかを指示するオブジェクトである。 GridBagLayout については、他のレイアウトマネージャと併せて、コンテナ内にコンポーネントを配置するで説明する。

要約

このプログラム例の コンポーネント 階層には非-Container の コンポーネント が 8 つある。 これらはプログラムが表示する Label、TextField、Choice、Scrollbar であり、 プログラムのグラフィカル UI を表現するためのコンポーネント である。 Frame の下に、ウィンドウ制御のような別の コンポーネント がある場合もある。

コンポーネント の階層には少なくとも 4 つの Container がある。Frame (ウィンドウ)、 Converter (Panel のカスタム)、そして 2 つの ConversionPanel (別のカスタム Panel) である。

このアプレット例に新たにウィンドウ (Dialog または Frame) を追加する場合、新 しいウィンドウは固有の コンポーネント 階層をもち、このレッスンで示した階層から独 立していることに注意する。


Previous | Next | Trail Map | Creating a User Interface | Java UI の概説