Swing アプリケーションで SwingUtilities.invokeLater() の本質をどのように感じますか。コード例をいくつか挙げてください。
1104 次
1 に答える
5
GUI 内で何かを更新する必要があるときはいつでも、AWT Event Threadを介して行う必要があります。
これは、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!"));
}
}
}
于 2010-07-02T01:00:30.253 に答える