我有一個在EDT內執行的方法。這件事情是這樣的:EDT擺動問題
myMethod()
{
System.out.prinln(SwingUtilities.isEventDispatchThread());
for (int i = 0; i < 10; i++)
{
Thread.sleep(3000);
someJPanel.remove(otherJPanel);
}
}
我希望發生: 十JPanels會從他們的父母一一拆下,用在每次取出之間有三個秒鐘間隔...
實際發生的事情: 所有10個元素一次被刪除後,所有內容都被凍結了30秒。
控制檯中的行始終爲真(SwingUtilities.isEventDispatchThread())。
由於我在美國東部時間所做的一切,爲什麼這些變化不是即時的?它爲什麼要等待該方法首先達到目的?
我應該如何修改我的代碼以實現三秒延遲inbetween清除?
要刪除的組件,但是從UI實際去除稍微幹了以後再 – 2013-03-01 02:07:42
我完全意識到這一點。我該如何讓它瞬間完成? – Karlovsky120 2013-03-01 02:08:24
您需要從EDT之外延遲。您的睡眠(3000)正在star the正常的Swing UI,包括實際移除組件。查看MadProgrammer的答案。 – 2013-03-01 02:10:30