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、インスタンス内でRunnableSWT ダイアログ ウィンドウを表示します。

于 2011-07-21T14:46:29.880 に答える