【问题标题】:Problems with SWT / AWT bridging?SWT / AWT 桥接问题?
【发布时间】:2010-02-14 13:32:34
【问题描述】:

下午,

我正在开发一个 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);

这种方法是否存在任何重大问题,或者我应该考虑更好的方法吗?这将如何影响应用程序中的线程/并发性。

谢谢

【问题讨论】:

    标签: java swing


    【解决方案1】:

    SWT_AWT 网桥肯定存在一些问题:

    1. 当然最重要的是线程问题。这里的问题是,当您同时使用 SWT 和 AWT 时,您实际上是在使用两个 GUI 线程。它们之间的正确同步是绝对必要的,否则您通常会遇到死锁。在大多数情况下,您可以使用 EventQueue#invokeLater 或 Display#asyncExec 来避免它。

    2. 第二个主要问题是模态问题。 SWT 有自己的模态堆栈,AWT 也有自己的。您可能也需要解决这些问题。对此有已知的解决方案。

    3. 您可能会在这里和那里看到外观和感觉不一致,可能需要根据具体情况进行修复。

    4. 还有其他一些小问题,例如有时鼠标滚轮滚动在某些平台上不起作用。

    在使用 SWT_AWT 做大事之前,请确保您阅读并理解 FAQ

    【讨论】:

      猜你喜欢
      • 2012-11-07
      • 1970-01-01
      • 2013-09-10
      • 2020-06-10
      • 2017-10-25
      • 1970-01-01
      • 2021-11-14
      • 2011-02-13
      • 2018-04-11
      相关资源
      最近更新 更多