2010-02-14 48 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