我在SWT中嵌入Swing组件时遇到问题(例如eclipse插件..) 目前我所拥有的:
public void createPartControl(Composite parent) {
java.awt.Frame f = SWT_AWT.new_Frame(parent);
JPanel panel = new JPanel(new BorderLayout());
JButton button = new JButton("Swing button");
JLabel label = new JLabel("Swing label");
panel.add(label,BorderLayout.NORTH);
panel.add(button,BorderLayout.CENTER);
f.add(panel);
}
此代码段无法加载,插件在第一行崩溃...
知道如何合并这些组件吗?
谢谢!
答案 0 :(得分:5)
http://www.eclipse.org/articles/article.php?file=Article-Swing-SWT-Integration/index.html
最低限度,在SWT复合体内嵌入AWT帧只需两行简单的代码
Composite composite = new Composite(parent, SWT.EMBEDDED | SWT.NO_BACKGROUND);
Frame frame = SWT_AWT.new_Frame(composite);
答案 1 :(得分:2)
由于您的代码在第一行失败,请首先确保使用Composite
创建父SWT.EMBEDDED
。如果不是,则使用SWT.EMBEDDED
创建子组合,然后调用
java.awt.Frame f = SWT_AWT.new_Frame(newChildComposite);
一个实例 org.eclipse.swt.Composite已创建 使用SWT.EMBEDDED样式。这个 样式表示AWT帧的信号 嵌入在Composite中。该 调用静态new_Frame方法 创建并返回这样的框架。该 然后可以用AWT填充帧 和/或Swing组件。