此jSlider代码导致应用程序挂起。
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
for(int i=0;i<100;i++)
{
jSlider1.setValue(i);
Thread.sleep(3000);
}
} catch (InterruptedException ex) {
Logger.getLogger(AsdView.class.getName()).log(Level.SEVERE, null, ex);
}
}
谢谢你们,我正在更新答案
Timer time = new Timer(100, new ActionListener() {
int percent = 0;
@Override
public void actionPerformed(ActionEvent e) {
percent++;
if (percent>100)
percent = 0;
jSlider1.setValue((int)(100*(percent/600.0)));
}
});
time.start();
答案 0 :(得分:1)
我猜你正试图做一些平滑的滚动。
该代码冻结,因为处理窗口绘制,大小调整等的事件线程正在被执行Thread.sleep(3000),100次冻结。
我建议您使用Swing timer一点一点地更改滚动条。
答案 1 :(得分:0)
我不知道为什么你把睡眠放在3秒钟,而且这也是为了100循环 3 * 100 = 5分钟,所以它会挂起5分钟 删除Thread.sleep(3000);
它会正常工作,不会挂起
答案 2 :(得分:0)
当你说你的应用程序“挂起”时,这通常意味着你有某种阻止你的线程取得进展的死锁。那是你在节目中观察到的吗?它当前的编写方式,当前的执行线程至少需要300秒才能完成。这项工作是在主要执行线程上完成的吗?如果是这样,您可能需要考虑创建一个新线程来完成这项工作。