GWT:从CanvasElement创建Canvas小部件

时间:2011-08-11 20:13:19

标签: gwt html5-canvas

我想在CanvasElement窗口小部件中包含<canvas>Canvas在HTML中)。

许多小部件(例如Label)都有一个静态方法SomeWidget.wrap(Element),用于包装现有的DOM元素。 我认为Canvas没有这样的方法,因为不是所有的浏览器都支持,因此用户应该被迫通过createIfSupported()

不幸的是,Canvas中的构造函数是私有的(受保护可以工作),这意味着Canvas不能被子类化。 (派生类中没有可用的构造函数。)

createIfSupported的代码片段和Canvas类中的构造函数:

  public static Canvas createIfSupported() {
    // check if canvas is supported; if it is not supported: return null
    return new Canvas(element);
  }

  private Canvas(CanvasElement element) {
    setElement(element);
  }

我最终复制了Canvas类并使构造函数公开。

有更好的方法吗? 如果没有,背后的原因是什么(除了可能不支持<canvas>)?

我正在使用GWT版本2.4.0.rc1。

谢谢, 儒略

1 个答案:

答案 0 :(得分:1)

这个问题很老,但是在新版本的GWT中有一个解决方案:

Canvas.wrap(canvasElement);

请参阅javadocs

我不知道它添加了哪个版本的GWT,但它适用于2.7.0。