////////////////////////////////////////////////////////////////////////////////
// << ja129h.java >>
//
//  JApplet(2):部品(パネル、イベント処理、タイマー)
//
//  タイマーを作成する。
//
// ●イベント処理
//  イベントソース:Timerクラス
//  イベント      :ActionEventクラス
//  イベントリスナ:ActionListenerインターフェース
//          actionPerformedメソッド
//
////////////////////////////////////////////////////////////////////////////////

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ja129h extends JApplet implements ActionListener {

  JButton b1,b2,b3;
  JLabel lab;
  boolean running = false;
  int n = 0;
  Timer timer = new Timer(1000,this);

  public void init() {
    // アプレットからコンテンツペインを取得。
    Container c = this.getContentPane();
    // コンテンツペインのレイアウトマネージャをGridLayoutに設定。
    c.setLayout(new GridLayout(2,1));

    // ボタンとラベルとパネルの作成。
    b1 = new JButton("起動");
    b2 = new JButton("停止");
    b3 = new JButton("リセット");
    lab = new JLabel();
    JPanel p = new JPanel();
    // ボタンをパネル内に追加。
    p.add(b1);
    p.add(b2);
    p.add(b3);
    // パネルとラベルをコンテンツペイン内に追加。
    c.add(p);
    c.add(lab);

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

    // 文字のフォント、大きさを設定。
    Font f = new Font("Serif", Font.BOLD, 40); 
    lab.setFont(f);        
  }

  // ActionListenerインターフェースのメソッド。            
  public void actionPerformed(ActionEvent e) {             
    if( running ) {
      n++; lab.setText("タイマー: " + n);   
    }                     
    if( e.getSource() == b1 ) { running = true; }      
    if( e.getSource() == b2 ) { running = false; }        
    if( e.getSource() == b3 ) { 
      n = 0; lab.setText("タイマー: " + n); 
      running = true;
    }        
  }

  public void start() { timer.start(); }
}
HTMLファイル
<html>
<head>
  <title>アプレット</title>
</head>
<body bgcolor=white text=black>
<applet code="ja129h.class" width="300" height="120">
</applet>
</body>
</html>
実行結果