我如何看待 SwingUtilities.invokeLater() 在任何 Swing 应用程序中的重要性。请给出一些代码示例。
问问题
1104 次
1 回答
5
每当您需要更新 GUI 中的某些内容时,您都应该通过AWT 事件线程来完成。
这是因为 AWT(和顶部的 Swing)有自己的线程来管理 GUI 的所有内容。没有它,当您的程序正在执行其他操作时,图形界面无法以异步方式处理事件和类似的事情。
因此,例如,如果您在 a 中声明了一个很长的任务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 回答