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
은 컨테이너의 순차 흐름에 요소를 추가하고(한 줄에 다른 요소가 차례로) 현재 줄에 맞지 않으면 요소를 다음 줄로 이동합니다.
지금은 창을 만들고 컨테이너의 레이아웃을 설정하고 최소값과 최대값이 있는 가로 막대를 만들었습니다. 이제 컨테이너에 진행률 표시줄을 추가할 차례입니다.
콘텐츠 창 레이어에 액세스하고 여기에 개체를 추가하는 데 사용되는 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);
}
}
}
출력::