2010-02-14 47 views
3

下午,SWT/AWT橋接問題?

我正在使用Eclipse RCP插件。我想在其中嵌入一個Swing組件。目前我使用的是SWT < - > AWT橋樑是這樣的:

Applet applet = new myApplet(); 
Composite swtAwtComponent = new Composite(parent, SWT.EMBEDDED); 
java.awt.Frame frame = SWT_AWT.new_Frame(swtAwtComponent); 
applet.init(); 
frame.add(applet); 

是否有任何signficant問題,通過這種方法,或者同樣是有沒有更好的方法,我應該考慮?這將如何影響應用程序中的線程/併發性。

感謝

回答

5

有definetly一些問題SWT_AWT橋:

  1. 最重要的ofcourse就是線程問題。這裏的問題是,當你同時使用SWT和AWT時,你基本上使用兩個GUI線程。它們之間的適當同步是絕對必要的,否則你最終會遇到死鎖。在大多數情況下,您可以通過使用EventQueue#invokeLater或Display#asyncExec來避免它。

  2. 第二個主要問題是模態問題。 SWT有自己的模式堆棧,AWT有自己的模式堆棧。你也可能需要解決這些問題。有這方面的已知解決方案。

  3. 您可能會在這裏和那裏看到外觀和感覺不一致,並可能需要修復各種情況。

  4. 還有一些其他問題,例如有時鼠標滾輪不能在某些平臺上工作。

請確保您在使用SWT_AWT做大事之前閱讀並理解FAQ