jToggleButton.setText() не изменяет текст на кнопке

Я работаю в NetBeans. Я хотел сделать простой 3-2-1 обратный отсчет после нажатия на кнопку переключения, отображая обратный отсчет на кнопке. Я немного новичок в работе со всем, что связано со временем в Java, но самый простой способ сделать такой простой обратный отсчет - просто использовать Thread.sleep(), как показано ниже. Программа ждет 3 секунды, как и должна, и печатает текст кнопки в командной строке, однако текст на самой кнопке не изменяется. Есть идеи, почему это может произойти и как это исправить? Спасибо!

jToggleButton1.setText("3...");
System.out.println(jToggleButton1.getText());
try{
    Thread.sleep(1000);
}
catch(InterruptedException e){}
jToggleButton1.setText("2...");
System.out.println(jToggleButton1.getText());
try{
    Thread.sleep(1000);
}
catch(InterruptedException e){}
jToggleButton1.setText("1...");
System.out.println(jToggleButton1.getText());
try{
    Thread.sleep(1000);
}
catch(InterruptedException e){}

1 ответ

Решение

Ваша проблема в том, что вы выполняете все свои операции в потоке диспетчеризации событий. Таким образом, пользовательский интерфейс не имеет возможности для обновления. Вам нужно использовать SwingWorker или, еще лучше, таймер свинга (тот, у которого есть обратный вызов Action), чтобы сделать эту работу правильной

Другие вопросы по тегам