8. Label / Button

ここからはコンポーネントの使い方です。14章までは必要なところだけ読んでもかまいません。

(1) Label はラベルを付けるためのクラスです

 まずコンポーネント1つめはラベルです。java.awt.Label クラスを使います。アプレットやウインドウにはグラフィックの機能を使って文字を書くことができるので、必要ないような気がしますか?

 グラフィックで描く文字とラベルの大きな違いは、ラベルはコンポーネントの1つであるということです。つまり、レイアウトマネージャによる位置の指定が可能だということですね。

 ラベルは以下のように作ります。
Label label = new Label("Name");

 表示したいラベルをコンストラクタの引数に指定します。コンテナに追加する場合は、これまでのボタンの例と同様に add( )を使います。

 他のコンポーネントと組み合わせて、入力させたい内容を示したりします。



(2) 例で何度も見てきた Button です

 ここまでの例題でボタンを何回も使ってきました。ここで改めてボタンの使い方を見ておきましょう。java.awt.Button クラスでボタンを作ります。ボタンのラベルにしたい文字列をコンストラクタの引数にしてボタンのオブジェクトを作ります。
Button button = new Button("Push!");

 Button クラスにはいくつかメソッドがあります。ボタンのラベルに関するものをあげておくと、

String getLabel()
ボタンのラベルを獲得します。

void setLabel(String label)
ボタンにラベル label を設定します。


 このメソッドを使えば、ボタンを作った後でもラベルを変更することができます。

 ボタンを押したときには ActionEvent が発生します。このイベントを処理するのは ActionListener インタフェース内に定義されている void actionPerformed(ActionEvent e) というメソッドです。

 イベントに関する情報は以下の通りです。

イベントの種類 ボタンを押したとき ActionEvent 発生
イベント処理用メソッド ActionListener インタフェース内に定義されている
void actionPerformed(ActionEvent e)
リスナ登録用メソッド void addActionListener(ActionListener obj)

 次の例題ではボタンを押すたびに、ボタンのラベルの数字が増えていきます。

 ButtonTest.java

// ButtonTest.java

import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;

public class ButtonTest extends Applet implements ActionListener {

    public void init() {

        // コンポーネント作成
        Label label = new Label("これを押して!");
        Button button = new Button("0");
        
        // レイアウト設定
        setLayout(new FlowLayout());

        // コンポーネント追加
        add(label);
        add(button);

        // リスナ登録
        button.addActionListener(this);
    
    }

    public void actionPerformed(ActionEvent e) {
        // ボタンのラベルを獲得します
        Button b = (Button)e.getSource();
        String buttonLabel = b.getLabel();

        // ボタンのラベルに1足した数字を設定します
        int x = Integer.parseInt(buttonLabel) + 1;
        b.setLabel( String.valueOf(x) );
    }
}


  ButtonTest.html

<APPLET CODE=ButtonTest.class width=200 height=100>
</APPLET>


 実行例 (画像をクリックすると実際のアプレットが起動します)


前の章(7.イベント処理)   次の章(9.TextField/TextArea)