我如何在任何swing应用程序中感受SwingUtilities.invokeLater()的基本功能。请给出一些代码示例。
答案 0 :(得分:5)
每当您需要更新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!"));
}
}
}