JProgressBar クラスを使用して Java プログレスバーを作成する
このチュートリアルは、SWING アプリケーションの JProgressBar
クラスを使用して Java プログレスバーを作成する方法を理解することを目的としています。また、プログレスバーがいっぱいになるレベルを考慮して、数字とテキストを表示する方法も学習します。
JProgressBar
クラスを使用して Java プログレスバーを作成する
ファイルをアップロード/ダウンロードし、通知なしにバックグラウンドで操作が実行されているとします。何時間も座って、マシンにアップロード/ダウンロードを実行させる場合があります。
これはプログレスバーが役立つ場所であり、実行された作業量を示します。時間のかかるタスクの進行状況バーを表示するウィジェットである JProgressBar
クラスを使用して、水平方向の進行状況バーから始めます。
サンプルコード:
import java.awt.*;
import javax.swing.*;
public class jProgressBarDemoOne {
public static void main(String[] args) {
final int MAXIMUM = 100;
final JFrame jFrame = new JFrame("JProgress Demo One");
// create horizontal progress bar
final JProgressBar progressBar = new JProgressBar();
progressBar.setMinimum(0);
progressBar.setMaximum(MAXIMUM);
progressBar.setStringPainted(true);
// add progress bar to the content pane layer
jFrame.setLayout(new FlowLayout());
jFrame.getContentPane().add(progressBar);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.setSize(300, 200);
jFrame.setVisible(true);
// update progressbar staring from 0 to 100
for (int i = 0; i <= MAXIMUM; i++) {
final int currentNumber = i;
try {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
progressBar.setValue(currentNumber);
}
});
java.lang.Thread.sleep(100);
} catch (InterruptedException event) {
JOptionPane.showMessageDialog(jFrame, event.getMessage());
}
}
}
}
出力:
main
関数内で、MAXIMUM
変数に 100
を割り当てます。これは、この数値が進行状況バーに表示されている場合にタスクの完了を示します。
JFrame
コンストラクターは、コンピューター画面にウィンドウを表示するために作成され、パネル、ボタン、メニューバーなど、それらが依存する他のコンポーネントのベースウィンドウです。
次に、JProgressBar
クラスの構造を作成して、水平方向のプログレスバーを作成します。setMinimum()
および setMaximum()
メソッドは、プログレスバーのデータモデルに格納されている最小値と最大値を設定するために使用される引数として整数を取ります。
setStringPainted()
メソッドはブール値を取り、プログレスバーがプログレス文字列をレンダリングするかどうかを決定します。文字列は、true
を取得した場合にレンダリングされます。そうでなければ、そうではありません。
setLayout()
メソッドを使用すると、このチュートリアルのコンテナのレイアウトを FlowLayout
として設定できます。FlowLayout
は、コンテナ内のシーケンシャルフロー(1 行に次々に要素)の要素を追加し、現在の行に収まらない場合は要素を次の行に移動します。
ここでは、ウィンドウを作成し、コンテナのレイアウトを設定し、最小値と最大値の水平バーを作成しました。次に、プログレスバーをコンテナに追加します。
コンテンツペインレイヤーにアクセスしてオブジェクトを追加できるようにするために使用される getContentPane()
メソッドを使用しています。
ユーザーがクロスボタン(X
)をクリックすると、ウィンドウを閉じるイベントが発生し、setDefaultCloseOperation()
関数がアプリケーションを閉じることができます。setSize()
はウィンドウの width
と height
を設定するために使用され、setvisible()
はウィンドウが true
になった場合にユーザーにウィンドウを表示します。
最後に、for
ループは、0%から始まり 100%になる進行状況バーを更新します。次のサンプルコードでは、進行状況バーに数字ではなくテキストが表示されます。
サンプルコード:
import java.awt.*;
import javax.swing.*;
public class jProgressBarDemoTwo {
static int MAXIMUM = 100;
static JFrame jFrame = new JFrame("JProgress Demo");
// create horizontal progress bar
static JProgressBar progressBar = new JProgressBar();
public static void main(String[] args) {
progressBar.setMinimum(0);
progressBar.setMaximum(MAXIMUM);
progressBar.setStringPainted(true);
// add progress bar to the content pane layer
jFrame.setLayout(new FlowLayout());
jFrame.getContentPane().add(progressBar);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.setSize(300, 200);
jFrame.setVisible(true);
// update progressbar by displaying text on it
int currentNumber = 0;
try {
while (currentNumber <= MAXIMUM) {
// set text considering the level to which the bar is colored/filled
if (currentNumber > 30 && currentNumber < 70)
progressBar.setString("wait for sometime");
else if (currentNumber > 70)
progressBar.setString("almost finished loading");
else
progressBar.setString("loading started");
// color/fill the menu bar
progressBar.setValue(currentNumber + 10);
// delay thread
Thread.sleep(3000);
currentNumber += 20;
}
} catch (Exception e) {
System.out.println(e);
}
}
}
出力::