| JavaのGUI |
まず手始めに、JavaにはどのようなGUIが用意されているのか見てみましょう。次のアプレットは、Javaで使用可能なすべてのGUIを貼り付けたアプレットです。
ここには、次のGUI部品が並んでいます。各部品の名前は、それぞれの部品のAPIリファレンスへリンクしてあります。
この他にキャンバス Canvas という部品もあります。この部品は、特にユーザと対話することが目的ではなく、その上にグラフィックスを描画することが目的の部品です。キャンバスもボタンなどと同様、パネル上に貼り付けられます。
アプレットの中のGUI部品を操作してみてください。ボタンは押せるし、選択項目は選択できます。テキスト領域には文字を入力することができ、その上、文字が入りきらなくなると勝手にスクロールしていきます。
このアプレットは、ソースを見れば分かる通り、単に部品をアプレット上に置いただけです。それでもマウスやキーボードで操作できてしまうところが、オブジェクト指向プログラミングのすごいところです。これらの部品は、一つ一つがオブジェクトになっていて、自分が何をするべきかをちゃんと知っているのです。(もちろん、ボタンが押されたときに何をするべきかは分かりません。それはプログラムを組む人が考えるべきことです。ボタンは「押すことができる」ということを知っているだけです。)
GUI部品は、パネルに貼り付けて使います。パネルというのは長方形の場所のことで、Javaの Panel クラスとして準備されています。アプレットクラスである Applet も実は Panel から継承されて作られています。したがって、アプレットはパネルでもありますから、もちろんGUI部品を貼り付けることができます。
アプレットやパネルにGUI部品を貼り付けるには、add メソッドを使います。例えば、アプレットに
"Start"
と書かれたボタンを貼り付けるためには、次のようにします。
add(new Button("Start"));
これで、新しいボタンが作られて、アプレットに貼り付けられます。簡単ですね。
しかし、何か足りないような気がしませんか?
そう、場所を指定していません。ふつうなら、10,10 というふうに、ボタンを置く場所を指定しなければならないはずです。実は、これも Java の便利な点の1つで、ユーザはGUI部品の場所を一つ一つ指定する必要はありません。ユーザは単に add メソッドを使って次々に部品をおいていけばいいのです。面倒な部品の位置管理は、レイアウトマネージャという便利なやつが、適切にやってくれます。
もちろん、レイアウトマネージャを使わずに自分で位置を指定することもできます。しかし、ウィンドウシステムというものは、いつ、どのようにウィンドウの大きさが変えられるか分かりません。ある大きさのウィンドウではきれいに配置されていたボタンやラベルが、ウィンドウを小さくしたらまったく使いにくくなってしまったということも考えられます。その点、レイアウトマネージャを使っていれば、ウィンドウの大きさに合わせて適切に部品を再配置してくれますから、部品がバラバラになって、使いにくくなることを極力避けることができます。このような意味からも、できるだけレイアウトマネージャを使って部品を配置するようにするべきです(と Sun の開発者は主張していますが、実際はなかなか思い通りには行かないようです)。
レイアウトマネージャについては、この章の後半で説明します。