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 の下に置くためのコードを示す。
それぞれの ConversionPanel は、Label、TextField、Scrollbar、Choice という 4 つの子をもっている。子を追加するコードを示す。public class Converter extends Applet { . . . public void init() { . . . //2 つの ConversionPanel、 . . . //metricPanel と usaPanel を作成する add(metricPanel); add(usaPanel); }GridBagConstraints は、GridBagLayout (この Panel のレイアウトマネージャ) に 対し、特定のコンポーネントをどのように配置するかを指示するオブジェクトである。 GridBagLayout については、他のレイアウトマネージャと併せて、コンテナ内にコンポーネントを配置するで説明する。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); }要約
このプログラム例の コンポーネント 階層には非-Container の コンポーネント が 8 つある。 これらはプログラムが表示する Label、TextField、Choice、Scrollbar であり、 プログラムのグラフィカル UI を表現するためのコンポーネント である。 Frame の下に、ウィンドウ制御のような別の コンポーネント がある場合もある。コンポーネント の階層には少なくとも 4 つの Container がある。Frame (ウィンドウ)、 Converter (Panel のカスタム)、そして 2 つの ConversionPanel (別のカスタム Panel) である。
このアプレット例に新たにウィンドウ (Dialog または Frame) を追加する場合、新 しいウィンドウは固有の コンポーネント 階層をもち、このレッスンで示した階層から独 立していることに注意する。
Java UI の概説 |