Код jSlider приводит к зависанию приложения - PullRequest
0 голосов
/ 28 апреля 2011

Этот код 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 ]

1 голос
/ 28 апреля 2011

Полагаю, вы пытаетесь сделать какую-то плавную прокрутку.

Этот код зависает, потому что поток событий, который обрабатывает рисование окон, размеры и т. Д., Замораживается при выполнении Thread.sleep (3000), 100 раз.

Я быРекомендуется использовать Таймер Swing , который постепенно меняет полосу прокрутки.

0 голосов
/ 28 апреля 2011

Когда вы говорите, что ваше приложение «зависает», это, как правило, означает, что у вас есть какой-то тупик, который препятствует продвижению ваших потоков. Это то, что вы наблюдаете в своей программе? Как написано в данный момент, текущий поток выполнения займет не менее 300 секунд. Эта работа выполняется в главном потоке выполнения? Если это так, вы можете рассмотреть возможность создания нового потока для этой работы.

0 голосов
/ 28 апреля 2011

Я не знаю, почему вы кладете сон на 3 секунды, и это тоже в цикле 100 3 * 100 = 5 минут, так что будет зависать до 5 минут удалить Thread.sleep (3000);

будет работать нормально и не зависнет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...