Прошу прощения за такой вопрос новичка, я пытаюсь установить задержку между изменением цвета двух полей JText
, то есть:
box1.setBackground(Color.yellow);
box2.setBackground(Color.red);
Я пробовал использовать:
try {
Thread.sleep(1000);
}catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
Однако при его использовании задержка происходит мгновенно , и оба цвета меняются только после задержки. Заранее спасибо за любой свет, который вы пролили на мою ситуацию :)
1 ответ
box1.setBackground(Color.yellow);
new Thread(new Runnable(){
public void run(){
try{
Thread.sleep(1000);
}catch(InterruptedException ex){
ex.printStackTrace();
}
box2.setBackground(Color.red);
}
}).start();
Если вы выполните Thread.sleep (1000); в основном потоке рендеринг страницы будет выполнен после выхода из спящего режима, и вы увидите, что оба поля меняют свой цвет.
Если сон выполняется в другом потоке, отличном от основного, рендеринг mainThread будет выполнен сразу после запуска нового потока, и вы увидите, что первый блок меняет свой цвет. После перехода в режим сна box2 изменит свой цвет. Извините за мой английский, надеюсь, вы его понимаете :)
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.
Thread.sleep(1000)
? Вы должны вызывать его между вызовамиsetBackground()
, это то, куда вы его вызываете?