下午,
我正在研究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);
这种方法是否存在重大问题,或者我应该考虑采用哪种更好的方法?这将如何影响应用程序中的线程/并发性.
谢谢
SWT_AWT网桥肯定存在一些问题:
最重要的是线程问题.这里的问题是当你同时使用SWT和AWT时,你实际上使用的是两个GUI线程.它们之间的正确同步是绝对必要的,否则您通常会遇到死锁.在大多数情况下,您可以使用EventQueue#invokeLater或Display#asyncExec来避免它.
第二个主要问题是模态问题.SWT有自己的模态堆栈,AWT有自己的模态堆栈.您可能还需要解决这些问题.已知有解决方案.
您可能会在这里和那里看到外观和感觉不一致,可能需要根据具体情况进行修复.
在使用SWT_AWT做大事之前,请务必阅读并理解常见问题解答.