3

我已经实现了自己的小部件(扩展Canvas),它具有明显的特征,即它全是黑色的。

在 WindowBuilder 中将我的画布添加到Shell设计模式时,它看起来就像一个普通的画布,尽管在执行模式下一切都很好。

有什么我遗漏的,或者这是 WindowBuilder 的固有限制吗?

这是我正在使用的代码,以防万一:

public class MyCanvas extends Canvas {
    public MyCanvas(Composite parent, int style) {
        super(parent, style);
        setBackground(Display.getDefault().getSystemColor(SWT.COLOR_BLACK));
        addPaintListener(new PaintListenerEx());
    }

    private class PaintListenerEx implements PaintListener {
        @Override
        public void paintControl(PaintEvent e) {
            e.gc.fillRectangle(MyCanvas.this.getBounds());
            e.gc.dispose();
        }
    }
}
4

2 回答 2

4

我相信 WindowBuilder 没有调用您尝试使用的构造函数来初始化您的Canvas. WindowBuilder 使用每个框架(如 SWT)的一些已知入口点,但有时即使您使用正确的签名也找不到入口点。

如果你想为 WindowBuilder 指定一个入口点,你可以使用这个:

 /**
  * @wbp.parser.entryPoint
  */

使 WindowBuilder 从那里开始,但不保证可以工作。

于 2012-10-24T11:47:54.240 回答
0

还有一种情况是您需要指定特定图形元素的默认构造函数。

 /**
  * @wbp.parser.constructor
  */

在我的特定情况下entryPoint不起作用,这就是解决方案。

于 2017-09-29T13:19:42.530 回答