0
안녕하세요. 나는 0.5 초 간격으로 1에서 5까지의 진행률 표시 줄을 보여주고 자하는 Java에서 양식을 준비하고 있지만 코드에서 진행 막대는 2.5 초 후에 1에서 5로 바로 점프한다. 스윙의 jprogressbar
public class cafee extends JFrame implements ActionListener {
JProgressBar pr1;
JButton b1;
public cafee() {
setLayout(new FlowLayout());
pr1 = new JProgressBar();
pr1.setSize(10, 1);
pr1.setForeground(Color.blue);
pr1.setMinimum(0);
pr1.setMaximum(5);
pr1.setValue(0);
pr1.setVisible(true);
b1 = new JButton();
b1.setVisible(true);
add(pr1);
add(b1);
b1.addActionListener(this);
}
public void actionPerformed(ActionEvent ae) {
if (ae.getSource() == b1) {
for (int a = 1; a <= 5; a++) {
try {
pr1.setValue(a);
Thread.sleep(500);
} catch (Exception e) {
}
}
}
}
public static void main(String[] args) {
cafee caf = new cafee();
caf.setVisible(true);
caf.setSize(500, 500);
}
}
사실, SwingWorker가 최선의 방법입니다. EDT (Event Dispatch Thread)와 SwingWorker를 읽고 특히 publish() 메서드를 사용하면 백그라운드 스레드의 EDT와 "대화"할 수 있습니다. – sbrattla