Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SVGCanvas.setDocument(svgDoc)渲染不会每次都执行_Java_Svg_Batik - Fatal编程技术网

Java SVGCanvas.setDocument(svgDoc)渲染不会每次都执行

Java SVGCanvas.setDocument(svgDoc)渲染不会每次都执行,java,svg,batik,Java,Svg,Batik,我有一个Java Batik程序,它修改文档并在JSVGCanvas中呈现修改。通过更改节点项的颜色进行修改。 第一次呈现发生,svgCanvas.setDocument(svgDoc)显示更改。 后续渲染不会在SVGCanvas中显示。 尽管如此,gVTreeRenderAdapter()告诉我们每次渲染都会开始,然后完成。 我检查了SVG文档,每次都进行了修改 private String modifySVG(String fromString, String toString) { N

我有一个Java Batik程序,它修改文档并在JSVGCanvas中呈现修改。通过更改节点项的颜色进行修改。 第一次呈现发生,svgCanvas.setDocument(svgDoc)显示更改。 后续渲染不会在SVGCanvas中显示。 尽管如此,gVTreeRenderAdapter()告诉我们每次渲染都会开始,然后完成。 我检查了SVG文档,每次都进行了修改

private String modifySVG(String fromString, String toString) {

 NodeList nList = svgDoc.getElementsByTagName("defs");
 String defs;

 for (int temp = 0; temp < nList.getLength(); temp++) {
    Node nNode = nList.item(temp);
    if (nNode.getNodeType() == Node.ELEMENT_NODE) {
        eElement = (Element) nNode;
        defs = eElement.getElementsByTagName("style").item(0).getTextContent();
        defs = defs.replace(fromString, toString);
        eElement.getElementsByTagName("style").item(0).setTextContent(defs);

   }
 }
svgCanvas.setDocument(svgDoc);
return defs;
private String modifySVG(String fromString,String to String){
NodeList nList=svgDoc.getElementsByTagName(“defs”);
字符串定义;
对于(int-temp=0;temp

}

DocumentState设置为ALWAYS\u DYNAMICsvgCanvas.setDocument(getSVGDocument())不起作用,因此在UpdateManager um=svgCanvas.getUpdateManager()中运行过;同样的问题。我发现的唯一方法是将文档保存在磁盘上,并在每次迭代时重新加载,这不是一个非常优雅的解决方案。