2
如何感受SwingUtilities.invokeLater()在任何swing應用程序中的基本性。請給出一些代碼示例。SwingUtilities.invokeLater()
如何感受SwingUtilities.invokeLater()在任何swing應用程序中的基本性。請給出一些代碼示例。SwingUtilities.invokeLater()
無論何時您需要在GUI中更新內容,都應該通過AWT事件線程來完成。
這是因爲AWT(和頂部的Swing)有它自己的線程來管理GUI的一切。沒有它,圖形界面不能以異步的方式處理事件和類似的事情,而你的程序正在做別的事情。
因此,舉例來說,如果你有一個Thread
宣佈一項艱鉅的任務:
public void MyThread extends Thread
{
class GUIUpdate implements Runnable
{
GUIUpdate(String msg)
{
...
}
public void run()
{
guiElement.appendText(msg);
}
}
public void run()
{
while (finished)
{
//do long calculations
//send partial output to gui
SwingUtilities.invokeLater(new GUIUpdate("something has changed!"));
}
}
}
參見「延續爲對象」:http://en.wikipedia.org/wiki/Continuation_passing_style#Continuations_as_objects – trashgod 2010-07-02 01:28:36