将Swing组件添加到Eclipse RCP插件

时间:2011-01-02 21:09:58

标签: java swing eclipse-plugin swt

我在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);
 }

此代码段无法加载,插件在第一行崩溃...

知道如何合并这些组件吗?

谢谢!

2 个答案:

答案 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组件。

取自Article-Swing-SWT-Integration