在自定义Eclipse视图中绘制

时间:2015-09-24 10:12:38

标签: java graphics eclipse-plugin swt awt

我使用this教程为我的Eclipse插件创建了一个自定义视图。现在我想在该视图中绘制一些内容。出于测试目的,它应该是一些行(例如):

import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.part.ViewPart;

public class PlotterView extends ViewPart {

    @Override
    public void setFocus() {

    }

    @Override
    public void createPartControl(Composite parent) {

        Shell activeShell = parent.getDisplay().getActiveShell();
        GC gc = new GC(activeShell);

        gc.drawLine(0, 0, 100, 100);
        gc.drawLine(100, 0, 0, 100);
    }
}

我也尝试过使用:

Display display = Display.getCurrent();
Shell activeShell = display.getActiveShell();

不幸的是没有线条可见。是否可以在自定义视图中绘制自定义形状?我该如何做到这一点?

1 个答案:

答案 0 :(得分:1)

活动shell覆盖整个Eclipse,因此这不适合绘制。

而是在您的视图中添加Canvas对象,并在PaintListener中绘制该对象:

@Override
public void createPartControl(Composite parent) {

  Canvas canvas = new Canvas(parent, SWT.NONE);

  canvas.addPaintListener(new PaintListener()
    {
      @Override
      public void paintControl(final PaintEvent event)
      {
        GC gc = event.gc;

        gc.drawLine(0, 0, 100, 100);
        gc.drawLine(100, 0, 0, 100);
      }
    });