jSlider代码导致应用程序挂起

时间:2011-04-28 16:35:25

标签: java netbeans

此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();

3 个答案:

答案 0 :(得分:1)

我猜你正试图做一些平滑的滚动。

该代码冻结,因为处理窗口绘制,大小调整等的事件线程正在被执行Thread.sleep(3000),100次冻结。

我建议您使用Swing timer一点一点地更改滚动条。

答案 1 :(得分:0)

我不知道为什么你把睡眠放在3秒钟,而且这也是为了100循环 3 * 100 = 5分钟,所以它会挂起5分钟 删除Thread.sleep(3000);

它会正常工作,不会挂起

答案 2 :(得分:0)

当你说你的应用程序“挂起”时,这通常意味着你有某种阻止你的线程取得进展的死锁。那是你在节目中观察到的吗?它当前的编写方式,当前的执行线程至少需要300秒才能完成。这项工作是在主要执行线程上完成的吗?如果是这样,您可能需要考虑创建一个新线程来完成这项工作。