////////////////////////////////////////////////////////////////////////////////
// << g147d.java >>
//
//  GUI(3):GUI部品(キャンバス、イベント処理)
//
//    フレーム内に赤丸ボタン、青丸ボタンを作成する。
//  赤丸ボタンをクリックすると、赤丸がキャンバスに描画され、
//  白丸ボタンをクリックすると、白丸がキャンバスに描画される。
//
// ●Graphicsクラスのメソッド
//    public abstract void fillOval(int x, int y, int w, int h)
//   機能:x,y,w,hで指定される矩形内に塗りつぶされた楕円が描画される。
//            x : 描画される楕円の左上隅の x 座標
//            y : 描画される楕円の左上隅の y 座標
//            w : 描画される楕円の幅
//            h : 描画される楕円の高さ
//
////////////////////////////////////////////////////////////////////////////////

import java.awt.*;
import java.awt.event.*;

class g147d extends Canvas implements ActionListener {

  Button b1,b2;
  Color col = Color.white;

  // コンストラクタ。
  g147d() {
    // フレームの作成。
    Frame f = new Frame("フレーム");
    // フレームにレイアウトマネージャ(FlowLayout)を設定。
    f.setLayout(new FlowLayout(FlowLayout.LEFT,20,20));

    // ボタンの作成。
    b1 = new Button("赤丸");
    b2 = new Button("白丸");
    // ボタンをフレーム内に追加。
    f.add(b1);
    f.add(b2);

    // キャンバスの大きさを設定。
    this.setSize(100,100);
    // キャンバスの背景色を黄色に設定。
    this.setBackground(Color.yellow);
    // キャンバスをフレーム内に追加。
    f.add(this);

    // フレームの大きさを設定。
    f.setSize(300,200);
    // フレームを表示。
    f.setVisible(true);

    // イベントリスナの登録。
    b1.addActionListener(this);
    b2.addActionListener(this);

  } 

  // ActionListenerインターフェースのメソッド。
  public void actionPerformed(ActionEvent e) {
    // 赤丸ボタンがクリックされたとき。
    if( e.getSource() == b1 ) { col = Color.red; } 
    // 白丸ボタンがクリックされたとき。
    if( e.getSource() == b2 ) { col = Color.white; }
    this.repaint();
  }

  // paintメソッドをオーバーライド。
  public void paint(Graphics g) {
    g.setColor(col);
    g.fillOval(20,20,50,50);
  }

  public static void main(String[] args) {
    g147d g = new g147d();
  }

}
実行結果

% javac g147d.java
% java g147d


赤丸ボタンをクリック


白丸ボタンをクリック