【问题标题】:Insert new Element to SVGDocument from ALWAYS_DYNAMIC JSVGCanvas从 ALWAYS_DYNAMIC JSVGCanvas 向 SVGDocument 插入新元素
【发布时间】:2011-08-12 08:34:16
【问题描述】:

我想要做的是将新元素插入从 JSVG 画布获取的 SVGDocument,以便它应该自动呈现并可以查看。

所以我有一个名为 SVGcanvas 的 JSVGCanvas,在 LoadEventDispatcher 中我得到了名为 doc 的 SVGDocument,如下代码:

this.SVGCanvas.addSVGLoadEventDispatcherListener(
    new SVGLoadEventDispatcherAdapter() {
        @Override
        public void svgLoadEventDispatchStarted (SVGLoadEventDispatcherEvent e) {
            doc = SVGCanvas.getSVGDocument();
            ...
        }
}

up 基于此:http://www.svgopen.org/2002/papers/kormann__developing_svg_apps_with_batik/

然后在事件监听器中,我使用这段代码

public void handleEvent (Event evt) {
    setRB(this.IDButtonGroup, this.ID);
    Element r = ((SVGDocument) doc).createElement("use");
    r.setAttribute("xhtml:href", "#cell");
    doc.getDocumentElement().appendChild(r);
}

基于此:http://wiki.apache.org/xmlgraphics-batik/DynamicSvgOffscreen

我认为它会在屏幕上运行,但我仍然无法让它运行。任何人都可以帮忙吗? setRB 函数工作正常,所以我认为问题不在处理程序中。我认为 SVGCanvas 没有呈现新文档。文档应该是 SVGCanvas 的,因为我将 SVG Canvas 的文档状态设置为 ALWAYS_DYNAMIC,所以我认为它会自动更新。我错过了什么吗?

【问题讨论】:

    标签: java dynamic canvas svg


    【解决方案1】:

    好的,我这样做的方式是正确的,但我确实错过了一些东西。 基于此:http://www.carto.net/papers/svg/manipulating_svg_with_dom_ecmascript/ 我应该使用

    public void handleEvent (Event evt) {
        setRB(this.IDButtonGroup, this.ID);
        Element r = ((SVGDocument) doc).createElementNS(SVGNS,"use");
        r.setAttributeNS(XLINKNS, "href", "#cell");
        doc.getDocumentElement().appendChild(r);
    }
    

    你就完成了!单元格定义现在在 SVGCanvas 中! 哦对了,SVGNS 和 XLINKNS 是 NameSpace String Constant

    String svgNS = "http://www.w3.org/2000/svg";
    var xlinkNS = "http://www.w3.org/1999/xlink";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-14
      • 2016-08-13
      • 1970-01-01
      • 1970-01-01
      • 2020-02-10
      • 1970-01-01
      • 1970-01-01
      • 2013-04-02
      相关资源
      最近更新 更多