У меня есть метод, который выполняется в EDT. Это что-то вроде этого:Проблемы с EDT-качанием
myMethod()
{
System.out.prinln(SwingUtilities.isEventDispatchThread());
for (int i = 0; i < 10; i++)
{
Thread.sleep(3000);
someJPanel.remove(otherJPanel);
}
}
Что я ожидал, чтобы это произошло: Десять JPanels будут удалены из их родителей один за другим, с тремя вторыми паузами между каждым удалением ...
Что произошло на самом деле: Все замерло на 30 секунд, после чего все 10 элементов были удалены сразу.
Линия в консоли всегда была верна (SwingUtilities.isEventDispatchThread()).
Поскольку я делаю все это в EDT, почему изменения не мгновены? Почему он дожидается, когда метод достигнет своего конца?
Как мне изменить свой код для достижения трехсекундной задержки между абзацами?
Вы удаляете компоненты, но фактическое удаление из пользовательского интерфейса делается немного позже –
Я прекрасно знаю об этом. Как сделать это мгновенно? – Karlovsky120
Вам нужно задерживать снаружи EDT. Ваш сон (3000) голодает от обычного пользовательского интерфейса Swing, включая фактическое удаление компонентов. См. Ответ MadProgrammer. –