java在进度条上停留几秒钟
我想要实现的是:
我想用不同速度的多个进度条(JProgressBar
)制作一个JFrame
问题
当一个进度条的值为25、50或75时,应停止当前进度条2秒。
然而,到目前为止,Thread.sleep()
将停止整个应用程序
Timer timer;
ActionListener listener;
listener = new ActionListener() {
int counter = 0;
int delta = 1;
int min = 0;
int max = 100;
public void actionPerformed(ActionEvent ae) {
counter += delta;
if (jRadioButton1.isSelected()) {
if (counter < min || counter > max) {
delta *= -1;
}
counter = Math.min(max, Math.max(min, counter));
jjProgressBar.setValue(counter);
jjProgressBar2.setValue(counter);
jjProgressBar3.setValue(counter);
if (jProgressBar.getValue() == 25 || jProgressBar.getValue() == 0 || jProgressBar.getValue() == 50 || jProgressBar.getValue() == 75 || jProgressBar.getValue() == 100) {
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
Logger.getLogger(Sim1.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
};
timer = new Timer(100, listener);
timer.start();
# 1 楼答案
你总是可以multithread你的进度条和
Thread.sleep()
它们各自Thread.sleep()
在您的特定上下文中没有真正意义,因为它只是一个单片应用程序,控制应该是MVC/多线程应用程序的内容