gwt – 制作一个简单的叠加类?

我想在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的子类.

点赞