2011-08-11 24 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。