GUI

Java の GUI (graphical user interface) は awt (abstract window toolkit) と呼ばれる道具を使いこなす必要があります。 けっして使いやすい道具とはいえませんが、機種に依存しない形で記述できる メリットもあります。

単純な button

次の program は画面に一個だけ button を表示する applet です。
import	java.awt.*;
import	java.applet.Applet;

public	class TestButton extends Applet {
  Button bttn;

  public void init(){
    bttn = new Button("This is a button.");
    add(bttn);
  }
}
ここでは、
  1. Button を定義して new Button()、
  2. 画面に張り付けている add する
だけですから、この button を押しても何も起こりません。 Button を押したら、何かの動作をさせるようにするには、そのための記述が必 要になります。

単純な event 処理

Button が押された回数を表示する applet です。
Source の該当する部分は 以下の通りです。
  public boolean action(Event e, Object o) {
    String label = o.toString();

    if (e.target instanceof Button) {
      if (label.equals("Push Me")) {
	++mousecnt;
	repaint();
      }
    }
    return true;
  }
}
ここでは、Push Me という button が押されたら、mousecnt を 1 増やして repaint() method を呼び出しています。

単純な text field

画面の中央に user からの type を受け付ける text field を張り付けた applet です。
Source を見れば分かりますが、 この program も、たとえ何が入力されても、なにもしない applet です。

複数の container を配置する

次の例は、
  1. 上に 3 つの button
  2. 真ん中に 3 つの Radio button
  3. 下に 2 つの text field
を配置した例です。
Button やら label やら、あるいは他の window を含めた container を 配置するために Layout manager が用意されています。
source

FlowLayout, BorderLayout, GridLayout の 3 つの sample program を見てみましょう。

  • FlowLayout は component を左から右に配置します。
    source
  • BorderLayout は、レイアウトの位置を、東西南北で指定します。
    source
  • GridLayout は、行数と列数を指定して component を格子上に配置する
    source

    入力 Event 処理

    上記の Layout managerによってさまざまな components を 画面上に張り付けることができますが、今度は、それらを利用することを考え ます。 以下の applet に対して、mouse cursor を入れたり出したり、click したり、 double click したりしてください。
    source Java では、上記のように、event を override することによって 望む動作を実現します。

    次の java file と html file とを自分のところに持っていって appletviewer を実行させてみましょう。 javac や appletviewer の使い方は大丈夫ですか?

    1. choice buttonと checkbox button
    2. テキストフィールドの例
    3. テキストエリアの例
    最後に応用例を 2 つほど挙げておきます。
    Font の種類や大きさを変えることができる applet です。
    source

    Java で「お絵書きツール」が作れます。