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 仕様をご覧になって試されると良いでしょう。