Остановите на пару секунд индикатор прогресса - PullRequest
0 голосов
/ 13 мая 2018

Что я пытаюсь сделать:

Я хотел бы сделать JFrame с несколькими индикаторами прогресса (JProgressBar) с разными скоростями.

Проблема

Когда значение одного индикатора выполнения равно 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 Ответ

0 голосов
/ 13 мая 2018

Вы всегда можете многопоточность ваши индикаторы выполнения и Thread.sleep() их по отдельности.

Thread.sleep() не имеет никакого смысла в вашем конкретном контексте, поскольку это только одно монолитное приложение, управляющее тем, чтодолжно быть приложением MVC / многопоточности.

...