いくつかのSVGのものをラップするために、GWTでいくつかの本当に単純なオーバーレイクラスを作成したいと思います。基本的に長方形を描画したいのですが、これがjavascriptでの方法です。
var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
svg.setAttribute('width', '100%');
svg.setAttribute('height', '100%');
document.body.appendChild(svg);
var rect = document.createElementNS('http://www.w3.org/2000/svg','rect');
rect.setAttribute("width","300");
rect.setAttribute("height","100");
svg.appendChild(rect);
そして今、私はそれをGWTに変換するのに苦労しています。私は、これらすべての呼び出しの周りに、次のような非常に薄いオーバーレイを実行できることを望んでいました。
public class SVGPanel extends JavaScriptObject {
protected SVGPanel() {}
public static native SVGPanel create(String width, String height) /*-{
var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
svg.setAttribute('width', width);
svg.setAttribute('height', height);
return svg;
}-*/;
}
public MyProject implements EntryPoint {
public void onModuleLoad() {
SVGPanel panel = SVGPanel.create("100%", "100%");
Document.get().getBody().appendChild(panel);
}
}
ええ、でも私は、SVGのもののjavascript表現からGWTjavaクラスにジャンプする方法を理解していません。1つは、SVGPanelクラスがJavaScriptObjectを拡張することですが、Elementタイプを想定しているため、単純にDocument本体クラスに追加することはできません。誰かがその橋を作る正しい方法を指摘することができれば、私はその後に行くことができるはずです。
また、これがいくつかの単純なSVGクラスを組み込むための最適な方法であるかどうかはわかりませんが、JSNIを使用するのではなく、DOMクラスを使用してモデル化する必要がありますか?
ありがとう