使用蜡染

时间:2015-07-08 08:13:12

标签: java dom svg batik

晚上好,

我的问题是在我的DOM文档中添加一个元素(矩形)。

添加如下:

创建一个元素rect light blue / fluo

Node node = doc.createElement("rect");
Element elem = (Element)node;
elem.setAttribute("fill", obj.getColor());

包含在一组元素g

Node newZone = doc.createElement("g");
Element elemZone = (Element)newZone;
elemZone.setAttribute("id", zone);

将元素rect添加到元素g

elemZone.appendChild(elem);

添加到文档

doc.getElementById(idUse).appendChild(elemZone);

更新文档JSVGCanvas(允许显示svg)

svg.setDocument(doc);

看起来也很奇怪,考虑到了变化,因为当我保存文档并显示文件时,我看到了变化。

但应用程序中没有任何内容更新。

另外,我在同一个过程后添加了一个元素(符号+使用)。 JSVGCanvas和更新文档都经过深思熟虑并且也可见。

提前感谢您的帮助......

说明: - 重新测试np次。 - 使用文档启动应用程序:矩形显示正常。

1 个答案:

答案 0 :(得分:0)

必须在SVG名称空间中创建SVG元素,以替换

Node node = doc.createElement("rect");

通过

Node node = doc.createElementNS("http://www.w3.org/2000/svg", "rect");

<g>元素相同。序列化和反序列化文档将修复命名空间问题,这就是为什么在重新加载时没有看到它。

对于Batik,您还必须致电

jsvgCanvas.setDocumentState(JSVGCanvas.ALWAYS_DYNAMIC);

在加载内容之前,并在update manager's主题中进行所有更改。