JProgressBar 클래스를 사용하여 Java 진행률 표시줄 만들기

Mehvish Ashiq 2023년10월12일
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은 컨테이너의 순차 흐름에 요소를 추가하고(한 줄에 다른 요소가 차례로) 현재 줄에 맞지 않으면 요소를 다음 줄로 이동합니다.

지금은 창을 만들고 컨테이너의 레이아웃을 설정하고 최소값과 최대값이 있는 가로 막대를 만들었습니다. 이제 컨테이너에 진행률 표시줄을 추가할 차례입니다.

콘텐츠 창 레이어에 액세스하고 여기에 개체를 추가하는 데 사용되는 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