java - 在自定义 Eclipse View 中绘制

标签 java graphics eclipse-plugin swt awt

我使用this为我的Eclipse插件创建了一个自定义 View 。教程。现在我想在该 View 内画一些东西。出于测试目的,它应该只是一些行(例如):

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();

不幸的是,没有可见的线条。是否可以在自定义 View 中绘制自定义形状?我该如何实现这一目标?

最佳答案

Activity shell 覆盖了整个 Eclipse,因此这不是一个合适的控件。

而是将 Canvas 对象添加到您的 View 中,并在 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);
      }
    });

关于java - 在自定义 Eclipse View 中绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32758741/

相关文章:

eclipse - 在 Eclipse(Kepler) 中创建 MAVEN 项目时出错

java - 从本地用户和 glassfish 到 Mysql DB 的并发连接

java - 是否可以使用具有纳秒值的 Jackson

java - 如何调用fragment的onActivityResult

Android:更改png文件颜色的最简单方法

java - 浮点到整数舍入太早(?)

eclipse-plugin - Eclipse 作业 API : how to track progress for job scheduled by another job?

java - NIO2 AsynchronousSocketChannel 完全使用 CompletionHandler 进行读/写

c++ - OpenGL 3.3 : GL_INVALID_OPERATION when calling glBindBuffer

java - 扩展私有(private)内部类: Is it better to use reflection hacks or copy/paste the base class?