我想在GWT中创建一些非常简单的覆盖类来包装一些SVG的东西.我基本上想要绘制一个矩形,这是我在
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表示跳转到GWT java类.首先,SVGPanel类扩展了JavaScriptObject,但我不能简单地将它添加到Document body类,因为它期望Element类型.如果有人能够指出正确的方式来建立这座桥梁,我应该能够在那之后继续前行.
另外,我不确定这是否是合并一些简单SVG类的最佳方式,我应该使用DOM类对它们进行建模而不是尝试使用JSNI吗?
谢谢
最佳答案 你需要给appendChild一个元素.因此,只需使您的overlay类扩展Element而不是JavaScriptObject.
public class SVGPanel extends Element {
请注意,Element是JavaScriptObject的子类.