javax.swing.JProgressBar

目的
プログレスバーとタイマーの使い方を知る

関連クラス

今回のソース
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class ProgressBarTest
{
	public static void main(String args[])
	{
		new MainWindow();
	}
}

class MainWindow extends JFrame
{
	JProgressBar progress;
	static final int PROGRESS_MAX = 100;
	static final int PROGRESS_MIN = 0;

	Timer timer;
	int count = 0;
	static final int TIMER_DELAY = 100;

	JLabel label;

	public MainWindow()
	{
		setTitle("ProgressBarTest");

		// ウインドウリスナの登録
		WindowListener w_listener = new WindowAdapter()
		{
			public void windowClosing(WindowEvent e)
			{
				System.exit(0);
			}
		};
		addWindowListener(w_listener);

		// プログレスバーの初期化と配置
		progress = new JProgressBar(PROGRESS_MIN,PROGRESS_MAX);
		progress.setValue(0);
		getContentPane().add(progress,BorderLayout.SOUTH);

		// プログレスバーの状態をあらわすラベル
		label = new JLabel("0%",JLabel.CENTER);
		getContentPane().add(label,BorderLayout.NORTH);

		// Timerの初期化
		ActionListener action_listener = new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				count++;
				progress.setValue(count);
				label.setText(count + "%");
				if(count == PROGRESS_MAX)
				{
					timer.stop();
				}
			}
		};
		timer = new Timer(TIMER_DELAY,action_listener);
		timer.setInitialDelay(0);
		timer.start();

		// ウインドウサイズを、コンポーネントのサイズに合わせる
		pack();
		setVisible(true);
	}
}
Source is here. (ZIP Format,832Byte,Shift-JIS)

コンパイル&実行
javac ProgressBarTest.java
java ProgressBar

説明
(概略)

このプログラムは、あまり説明するところが無いですね(笑)。
単純明快な動作しかしません。
ただ、0〜100%までをプログレスバーによって、状態表示するだけです。
ソースの方もシンプルになっているので、
そちらを読めば、大体理解出来ると思います。

(サンプルプログラムの説明)

static final int PROGRESS_MAX = 100;
static final 〜というのは、定数を記述する時の
決まり文句みたいなものですね。
staticをつけることによって、そのクラス特有の値という意味合いになり、
特にインスタンスを生成しなくても、<ClassName>.<FieldName>で
参照出来るようになります。(ex Integer.MAX_VALUE)
今回のようなプログラムの場合は、つけなくても良いかもしれませんね。
また、finalは定数を意味します。
ウインドウリスナの登録
順番に読んでいっている人にとっては、もう3回目ですね(笑)。
しかし、重要なことなので、きちんと覚えるまでは、
繰り返しやった方が良いでしょうね。

Windowsリスナは、登録されたウインドウを見張るものです。
ウインドウの状態を監視することで、各種のイベント処理を行うことが出来ます。
また、WindowAdapterクラスを用いることで、WindowEvent中の
必要なイベントについてのみ、処理を行わせることが出来ます。
プログレスバーの初期化と配置
JProgressBarの初期化に、JProgressBar(int min,int max)
というコンストラクタを用いています。
縦方向にプログレスさせるには、
JProgressBar(JProgressBar.VERTICAL)もしくは、
JProgressBar(JProgressBar.VERTICAL,int min,int max)
いずれかのコンストラクタを使います。
timer = new Timer(TIMER_DELAY,action_listener);
タイマーの初期化に使われる、アクションリスナは、
タイマーが、delay[ms]ごとに行うイベント処理を指定します。
タイマー処理において、最も重要なところですね。
timer.setInitialDelay(0);
setInitialDelayメソッドは、タイマーのスタートを、
どれだけ遅らせるかという、そのまんまのメソッドです。
今回は、特に遅らせる理由がないので、0をセットして、
すぐにアニメーションが始まるようにしています。