(Java Swing) Вызов функции во временных интервалах и отображение времени до следующего вызова в метке - PullRequest
0 голосов
/ 21 мая 2011

У меня есть такая функция в приложении Java Swing.Мне нужно после нажатия на кнопку вызова многих функций в промежутках и в циклах.Функция должна вызываться внутри jbutton, потому что у меня есть некоторые глобальные параметры в View, которые используются в функции jbutton.Не могли бы вы помочь мне, как я могу создать задержку между вызовами функций и как отобразить оставшееся время в jLabel?

private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {

        statusMessageLabel.setText("Proccess started.");
        for(int i=0;i< cycles;i++) {

            //display remaining time
            jLabelTimer.setText("00:09:59");
            // after time call many functions and then go again
            manyFunctions();

        } catch (Exception e) {
            System.out.println(e);
        }
        statusMessageLabel.setText("Proccess ended.");
        }
}

Ответы [ 2 ]

3 голосов
/ 21 мая 2011

Я согласен с рекомендацией Говарда, что таймер Swing может хорошо работать здесь (1+), но моя другая проблема с вашим кодом здесь:

manyFunctions();

Что именно происходит в этом месте? Вы звоните много кода, который занимает много времени / ресурсов процессора? Если это так, вам нужно позаботиться о том, чтобы не вызывать это в основном потоке Swing, EDT, а скорее вызывать его в фоновом потоке, но в то же время необходимо обновить компоненты Swing только в EDT. Это может быть упрощено с помощью SwingWorker, и вы можете прочитать больше об этом здесь: Параллелизм в Swing

2 голосов
/ 21 мая 2011

Звучит так, будто вы хотите взглянуть на таймеры качания . С ними вы можете запланировать отдельные звонки или делать их периодически.

Таким образом, вы также можете добавить таймер, который периодически сбрасывает текст вашей метки.

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