last modified: Feb./3rd/2002
いまから AWT をつかって GUI を作っていきます。最初に AWT の GUI がどんなものか、かいつまんで見ておきます。
そのために、本節ではアプレットにボタンを追加します。ボタンやテキストフィールド、ラベルなどの GUI 部品をコンポーネントと呼びます。
GUI コンポーネントは AWT オブジェクトです。ボタンには Button
クラスが用意されています。コンポーネントには他にもたくさんあり、それぞれを対応するクラスのオブジェクトとして作成します。これらのクラスは、 java.awt.Component
クラスから派生しています。
Button, Canvas, Checkbox, Choice, Label, List, Scrollbar, TextArea, TextField
ボタンクラスのオブジェクトを作成してみます。コンストラクタは次のように定義されています:
Button() |
ラベルなしのボタンを構築します。 |
Button(String label) |
指定されたラベルが付いたボタンを構築します。 |
ここではラベルが "OK" と "Cancel" のボタンを二つ作ってみます。
Button btnOk = new Button("OK"); Button btnCl = new Button("Cancel");
簡単ですね。
作成できたらアプレットに貼り付けます。貼り付ける対象が起動しているアプレット自身であるならば、 this
キーワードを指定して、次のように add()
メソッドを用います。
this.add(btnOk); this.add(btnCl);
add()
java.awt.Container
クラスで実装されているものを Applet
クラスが継承したものです。コンポーネントを貼り付けられる GUI 部品をコンテナと呼びますが、 Applet
もコンテナの一つです。ほかに、次のようなコンテナが存在します:
Panel, ScrollPane, Dialog, Frame
ボタンを作成し、追加したアプレットです。
import java.applet.*; import java.awt.*; public class ButtonTest extends Applet { //フィールドでボタン変数作成 Button btnOk; Button btnCl; public void init() { //ボタン変数に参照代入 btnOk = new Button("OK"); btnCl = new Button("Cancel"); //ボタンオブジェクトの追加 this.add(btnOk); this.add(btnCl); } }
GUI 部品をフィールドで変数定義したのは、複数のメソッドで利用することが多いからです。
<p><applet code="ButtonTest.class" width="100" height="50"> アプレットが実行できない場合の代替内容。 </applet></p>
アプレット:ButtonTest.class |
コンポーネントやコンテナのスーパークラスである Component
クラスでは、 GUI 部品で共通に利用できるメソッドがたくさん実装されています。ここで幾つかサンプルで示してみます:
import java.applet.*; import java.awt.*; public class ButtonTest2 extends Applet { //フィールドでボタン変数作成 Button btnOk; Button btnCl; public void init() { //ボタン変数に参照代入 btnOk = new Button("OK"); btnCl = new Button("Cancel"); //部品の操作 //フォントの指定 btnOk.setFont(new Font("SansSerif", Font.BOLD, 20)); btnCl.setFont(new Font("Serif", Font.ITALIC, 20)); //背景色の指定 btnOk.setBackground(Color.black); btnCl.setBackground(Color.white); //前景色の指定 btnOk.setForeground(Color.lightGray); btnCl.setForeground(Color.black); //ボタンオブジェクトの追加 this.add(btnOk); this.add(btnCl); } }
アプレット:ButtonTest2.class |
ここでは、本稿中で Applet
に対して用いたことのあるメソッドしか使いませんでしたが、他にもたくさんのメソッドがあります。 API 仕様をご覧になって試されると良いでしょう。