从AWT / Swing显示SWT模态对话框

时间:2011-07-20 14:06:38

标签: swt swt-awt albireo

使用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) {
    ???
}

1 个答案:

答案 0 :(得分:2)

我不确定,如果我理解这个问题,但是当您使用Albireo / SWT_AWT桥编写程序时,您可以正常使用SWT,当您需要时,可以使用Swing进行一些工作({{3}显示)..因此,如果您在某个全局属性中拥有父级(最可能是Shell实例),则可以随时随地创建SWT对话框。

修改

要阻止AWT线程,您可以调用SwingUtilities Runnable方法,并在{{1}}实例内显示SWT对话窗口。