Eclipse plugin 从void main调用ViewPart(SWT)

Eclipse plugin 从void main调用ViewPart(SWT),eclipse-plugin,swt,Eclipse Plugin,Swt,我不熟悉eclipse插件和SWT。我正在设计一个具有一些功能的视图部件。 但唯一的问题是,我必须将其作为eclipse插件启动以进行检查。 有什么方法可以从main(String[]args)方法调用它吗 我正在发布我的示例viewpart代码 public class View extends ViewPart { public static Display display=new Display(); public static final String ID = "Test.View";

我不熟悉eclipse插件和SWT。我正在设计一个具有一些功能的视图部件。 但唯一的问题是,我必须将其作为eclipse插件启动以进行检查。 有什么方法可以从main(String[]args)方法调用它吗

我正在发布我的示例viewpart代码

public class View extends ViewPart {
public static Display display=new Display();
public static final String ID = "Test.View"; //$NON-NLS-1$
private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());

public View() {
}

/**
 * Create contents of the view part.
 * @param parent
 */
@Override
public void createPartControl(Composite parent) {
    Composite container = toolkit.createComposite(parent, SWT.NONE);
    toolkit.paintBordersFor(container);
    {
        Label lblNewLabel = new Label(container, SWT.NONE);
        lblNewLabel.setBounds(25, 46, 49, 13);
        toolkit.adapt(lblNewLabel, true, true);
        lblNewLabel.setText("New Label");
    }

    Spinner spinner = new Spinner(container, SWT.BORDER);
    spinner.setBounds(88, 105, 47, 21);
    toolkit.adapt(spinner);
    toolkit.paintBordersFor(spinner);

    DragSource dragSource = new DragSource(container, DND.DROP_MOVE);

    DropTarget dropTarget = new DropTarget(container, DND.DROP_MOVE);

    Canvas canvas = new Canvas(container, SWT.NONE);
    canvas.setBounds(94, 161, 174, 148);
    toolkit.adapt(canvas);
    toolkit.paintBordersFor(canvas);

    createActions();
    initializeToolBar();
    initializeMenu();
}

public void dispose() {
    toolkit.dispose();
    super.dispose();
}

/**
 * Create the actions.
 */
private void createActions() {
    // Create the actions
}

/**
 * Initialize the toolbar.
 */
private void initializeToolBar() {
    IToolBarManager tbm = getViewSite().getActionBars().getToolBarManager();
}

/**
 * Initialize the menu.
 */
private void initializeMenu() {
    IMenuManager manager = getViewSite().getActionBars().getMenuManager();
}

@Override
public void setFocus() {
    // Set the focus
} 
我能写些像这样的东西吗

public static void main(String[] args){
    View v=new View();

    Shell shell=new Shell(display);
    v.createPartControl(shell);
}
  • 事实并非如此,Eclipse视图是RCP的一部分,并且依赖于its基础设施。您可以创建一个只显示视图的小型RCP应用程序

  • 具有
    公共静态显示=新显示()在你看来是完全错误的!在代码运行时,肯定已经有一个
    显示
    ,可以通过
    Display.getDefault()
    (在任何线程上)或
    Display.getCurrent()
    (在GUI线程上)访问