2011-08-11 8 views
3

CanvasウィジェットでCanvasElement(HTMLで<canvas>)をラップします。GWT:CanvasElementからキャンバスウィジェットを作成します。

多くのウィジェット(たとえば、ラベル)には、既存のDOMエレメントをラップするための静的メソッドSomeWidget.wrap(Element)があります。 私はすべてのブラウザのサポートので、ユーザーはcreateIfSupported()を通過するように強制する必要がありませんので、キャンバスには、このような方法を備えていない想像してみてください。

残念ながらキャンバス内のコンストラクタは、キャンバスがサブクラス化できないことを意味し、(仕事と保護)プライベートです。 (派生クラスで利用可能な任意のコンストラクタはありません。)

コード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で動作します。

関連する問題