swing 线程

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()

你可能感兴趣的:(thread,UI,swing,活动)