2011-08-11 41 views
3

我想在Canvas小部件中包装CanvasElement<canvas>以HTML格式)。GWT:从CanvasElement创建Canvas小部件

许多小部件(例如标签)具有用于包装现有DOM元素的静态方法SomeWidget.wrap(Element)。 我想象画布不具备这种方法,因为不是所有浏览器都支持,因此用户应该被迫去通过createIfSupported()

不幸的是,Canvas中的构造函数是私有的(protected将工作),这意味着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

这个问题是旧的,但在GWT的较新版本的解决方案:

Canvas.wrap(canvasElement); 

javadocs

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