1

使用 Albireo,很容易看到如何从 SWT 显示 Swing 对话框:

private AwtEnvironment awtEnv = AwtEnvironment.getInstance(Display.getCurrent);

...
// call from SWT thread
void showSwingMessageDialog(String msg) {
    awtEnv.invokeAndBlockSwt(new Runnable() {
        public void run() {
            Frame parentFrame = awtEnv.createDialogParentFrame();
            JOptionPane.showMessageDialog(parentFrame, msg);
        }
    }
}

我想从 AWT 线程显示一个 SWT 对话框,即

// call from AWT thread
void showSWTMessageDialog(String msg) {
    ???
}
4

1 回答 1

3

我不确定,如果我很好地理解了这个问题,但是当您使用 Albireo/SWT_AWT 桥编写程序时,您通常会使用 SWT,并且在需要时,您可以使用 Swing 进行一些工作(如eclipse wiki 上的这个示例所示) ..因此,如果您Shell在某个全局属性中有您的父级(很可能是实例),您可以随时随地创建 SWT 对话框。

编辑

为了阻塞 AWT 线程,您可以调用实例的invokeAndWait()方法SwingUtilities并在Runnable实例内部显示 SWT 对话窗口。

于 2011-07-21T14:46:29.880 回答