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