使用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) {
???
}
答案 0 :(得分:2)
我不确定,如果我理解这个问题,但是当您使用Albireo / SWT_AWT桥编写程序时,您可以正常使用SWT,当您需要时,可以使用Swing进行一些工作({{3}显示)..因此,如果您在某个全局属性中拥有父级(最可能是Shell
实例),则可以随时随地创建SWT对话框。
修改强>
要阻止AWT线程,您可以调用SwingUtilities
Runnable
方法,并在{{1}}实例内显示SWT对话窗口。