如何在编辑器中添加像Button这样的GUI组件?

时间:2013-01-03 12:53:08

标签: eclipse user-interface eclipse-plugin swt eclipse-rcp

我是RCP的初学者,刚开始构建RCP应用程序。我想在编辑器中使用像Button,comboBox,Checkbox这样的GUI组件。我设法在Extensions中添加一个编辑器并为它创建一个类。我已经编写了在creatPartControl中创建标签的代码,但它不起作用。我得到一个黑色的窗口。我应该像这样添加编辑器

layout.addStandaloneView(Editor.id, true, IPageLayout.TOP,0.7f,
                layout.getEditorArea());
layout.addStandaloneView(View.ID, true, IPageLayout.BOTTOM,0.4f,
                layout.getEditorArea());

请帮我解决这个问题。如果可能,请举例说明如何添加编辑器并在其中创建标签和按钮。 提前谢谢你的帮助 我在createPartControl()

中的Editor.java内容中的代码
parent.setLayout(new GridLayout());
Button b=new Button(parent,SWT.TOGGLE);

b.setText("Hello ");
Label label1 = new Label(parent, SWT.NONE);
label1.setText("First Name");


package com.hello;

import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.part.EditorPart;

public class Editor extends EditorPart {
    public static final String ID = "TestApplication.editor3";

    public Editor() {
        // TODO Auto-generated constructor stub
    }

    @Override
    public void doSave(IProgressMonitor monitor) {
        // TODO Auto-generated method stub

    }

    @Override
    public void doSaveAs() {
        // TODO Auto-generated method stub

    }

    @Override
    public void init(IEditorSite site, IEditorInput input)
            throws PartInitException {
        // TODO Auto-generated method stub

    }

    @Override
    public boolean isDirty() {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public boolean isSaveAsAllowed() {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public void createPartControl(Composite parent) {
        Label label = new Label(parent, SWT.NONE);
        label.setText("sssssss");
    }

    @Override
    public void setFocus() {
        // TODO Auto-generated method stub

    }

}

2 个答案:

答案 0 :(得分:0)

自从我在Eclipse编辑器上工作已经有几年了。这是编辑器的屏幕截图,因此您可以看到我做的不仅仅是添加按钮。

Cobol editor

  • 我扩展了Viewer类以创建编辑器的GUI。
  • 我扩展了EditorPart类以创建编辑器的功能。

由于我正在构建的编辑器,我必须创建自己的Canvas版本和我自己的IDocument版本。

答案 1 :(得分:0)

您没有正确初始化编辑器,在打开编辑器时会导致问题。填写您的init()方法,如下所示,看看是否有帮助:

@Override
public void init(IEditorSite site, IEditorInput input)
        throws PartInitException {
    setSite(site);
    setInput(input);
}