2011-07-20 6 views
1

からSWTモーダルダイアログを表示、それはSWTからSwingのダイアログを表示する方法を確認するのは簡単です:アルビレオを使用してAWT/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

1行以上のコードを投稿できますか? – Sorceror

+0

もちろん、こちらです。 –

+0

@AlexeyRomanovねえ、あなたはこれを理解したことがありますか?同じ問題を抱え、新しいシェルをJFrameにブロックしようとしました。 – milez

答えて

2

私はこの質問をうまく理解できるとは分かりませんが、Albireo/SWT_AWTブリッジを使用してプログラムを作成するときはSWTを通常使用し、必要なときにはSwingを使用することができます(this example on eclipse wiki)。あなたが親(おそらくShellインスタンス)をいくつかのグローバル属性に持っていれば、いつでもどこでも必要なあなただけのAWTスレッドをブロックするための

EDIT

.. SWTダイアログを作成することができ、あなたはinvokeAndWait()SwingUtilitiesの方法とRunnableインスタンス内SWTダイアログウィンドウを表示する呼び出すことができます。..

+0

質問は、AWTイベントスレッドをブロックするかどうかです。 –

+0

私は確信していません、あなたはおそらくそれを試す必要があります..とにかく、なぜスレッドをブロックしたいですか? [wiki記事](http://wiki.eclipse.org/Albireo_Documentation#Multiple_Event_Threads)のこの小さな部分があなたや、もっと深くて(そしてもっと長い)SWTとAWTについての記事(http:// www。 eclipse.org/articles/article.php?file=Article-Swing-SWT-Integration/index.html)は質問に答えるのに役立ちます.. – Sorceror

+0

"とにかく、なぜスレッドをブロックしたいのですか?" Eclipse Cornerの記事の "Modal dialogs"セクションでは、これがなぜ必要なのかを説明しています(ただし、それを行う方法ではありません)。 –

関連する問題