JProgressBar
forループを繰り返し処理し、ループ内の値を更新して..を開始しようとしていSwingUtilities.invokeLater
ますが、更新は完了後にのみ行われます。以下は私の簡単なコードです:
import java.awt.Color;
import java.awt.Rectangle;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.SwingUtilities;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ProgressBar extends JApplet {
JProgressBar pg = null;
JPanel panel = null;
JButton start = null;
int i;
public void init() {
pg = new JProgressBar(0, 100);
pg.setStringPainted(true);
this.setSize(1200, 600);
this.setLayout(null);
panel = new JPanel();
panel.setLayout(null);
panel.setBackground(Color.white);
this.setContentPane(panel);
this.setVisible(true);
pg.setBounds(new Rectangle(630, 20, 150, 30));
add(pg);
start = new JButton("start");
start.setBounds(new Rectangle(330, 20, 200, 30));
start.setBackground(Color.lightGray);
panel.add(start);
start.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
pg.setValue(0);
pg.setStringPainted(true);
for (i = 0; i <= 100; i = i + 1) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
pg.setValue(i);
java.lang.Thread.sleep(100);
} catch (Exception e) {}
}
});
}
}
});
}
}
forループの完了後に100%progress bar
しか更新されないため、の更新を段階的に反映する方法。