SwingUtilities | <nobr>第 4 页(共4 页)</nobr> |
虽然 SwingUtilities
类不是 Thread
API 的一部分,但还是值得简单提一下。
正如前面提到的,Swing 应用程序有一个 UI 线程(有时叫称为事件线程),所有 UI 活动都必须在这个线程中发生。有时,另一个线程也许想要更新屏幕上某样东西的外观,或者触发 Swing 对象上的一个事件。
SwingUtilities.invokeLater()
方法可以让您将 Runnable
对象传送给它,并且在事件线程中执行指定的 Runnable
。它的同类 invokeAndWait()
会在事件线程中调用 Runnable
,但 invokeAndWait()
会阻塞,直到 Runnable
完成执行之后。
void showHelloThereDialog() throws Exception {
Runnable showModalDialog = new Runnable() {
public void run() {
JOptionPane.showMessageDialog(myMainFrame, "Hello There");
}
};
SwingUtilities.invokeLater(showModalDialog);
}
对于 AWT 应用程序,java.awt.EventQueue
还提供了 invokeLater()
和 invokeAndWait()
。