JProgressBar クラスを使用して Java プログレスバーを作成する

Mehvish Ashiq 2022年8月26日
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());
            }
        }
    }
}

出力:

jprogressbar クラスを使用して Java プログレスバーを作成する-プログレスバーパート 1 の番号

jprogressbar クラスを使用して Java プログレスバーを作成する-プログレスバーパート 2 の番号

main 関数内で、MAXIMUM 変数に 100 を割り当てます。これは、この数値が進行状況バーに表示されている場合にタスクの完了を示します。

JFrame コンストラクターは、コンピューター画面にウィンドウを表示するために作成され、パネル、ボタン、メニューバーなど、それらが依存する他のコンポーネントのベースウィンドウです。

次に、JProgressBar クラスの構造を作成して、水平方向のプログレスバーを作成します。setMinimum() および setMaximum() メソッドは、プログレスバーのデータモデルに格納されている最小値と最大値を設定するために使用される引数として整数を取ります。

setStringPainted() メソッドはブール値を取り、プログレスバーがプログレス文字列をレンダリングするかどうかを決定します。文字列は、true を取得した場合にレンダリングされます。そうでなければ、そうではありません。

setLayout() メソッドを使用すると、このチュートリアルのコンテナのレイアウトを FlowLayout として設定できます。FlowLayout は、コンテナ内のシーケンシャルフロー(1 行に次々に要素)の要素を追加し、現在の行に収まらない場合は要素を次の行に移動します。

ここでは、ウィンドウを作成し、コンテナのレイアウトを設定し、最小値と最大値の水平バーを作成しました。次に、プログレスバーをコンテナに追加します。

コンテンツペインレイヤーにアクセスしてオブジェクトを追加できるようにするために使用される getContentPane() メソッドを使用しています。

ユーザーがクロスボタン(X)をクリックすると、ウィンドウを閉じるイベントが発生し、setDefaultCloseOperation() 関数がアプリケーションを閉じることができます。setSize() はウィンドウの widthheight を設定するために使用され、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);
        }
    }
}

出力::

jprogressbar クラスを使用して Java プログレスバーを作成する-プログレスバーパート 1 のテキスト

jprogressbar クラスを使用して Java プログレスバーを作成する-プログレスバーパート 2 のテキスト

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

関連記事 - Java GUI