GWT:从CanvasElement创建画布小部件

GWT:从CanvasElement创建画布小部件,gwt,html5-canvas,Gwt,Html5 Canvas,我想在画布小部件中包装画布元素(HTML格式) 许多小部件(例如Label)都有一个静态方法SomeWidget.wrap(Element),用于包装现有的DOM元素。 我想Canvas不支持这种方法,因为不是所有浏览器都支持,因此用户必须通过createIfSupported() 不幸的是,Canvas中的构造函数是私有的(protected将起作用),这意味着Canvas不能被子类化。(派生类中没有可用的构造函数。) Canvas类中的createIfSupported和构造函数的代码片段:

我想在
画布
小部件中包装
画布元素
HTML格式)

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

不幸的是,Canvas中的构造函数是私有的(protected将起作用),这意味着Canvas不能被子类化。(派生类中没有可用的构造函数。)

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

  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类并公开了构造函数

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

我使用的是GWT版本2.4.0.rc1

谢谢,
Julian

这个问题由来已久,但在更新版本的GWT中有一个解决方案:

Canvas.wrap(canvasElement);

我不知道它是在哪个版本的GWT中添加的,但它可以在2.7.0上运行