Я хочу покрасить панель в синий цвет, затем подождать пять секунд и заняться другими делами.
Теперь у меня есть следующий фрагмент кода, который, как я ожидаю, будет делать то, что я хочу. Вот:
JPanel somePanel = getSomePanel();
somePanel.setBackground(Color.BLUE);
Object lock = new Object();
synchronized (lock) {
try {
lock.wait(5000);
}
catch (InterruptedException exc) { }
}
// Do other stuff
Но вместо этого он ждет пять секунд и затем окрашивает компонент в синий цвет.
- Зачем сначала ждать, потом красить в синий цвет, а не наоборот? (Думаю, это как-то связано с механизмом Swing...?)
- Как «изменить этот порядок»?
Thread.sleep(n)
реализуйте SwingTimer
для повторяющихся задач илиSwingWorker
для длительных задач. Дополнительные сведения см. в разделе Параллелизм в Swing. - person Andrew Thompson   schedule 30.01.2013invokeLater()
илиinvokeAndWait()
это поведение также зависит от разных платформ? - person joey rohan   schedule 30.01.2013// Do other stuff
Чтобы быстрее получить помощь, опубликуйте SSCCE. - person Andrew Thompson   schedule 30.01.2013