2012-12-28 50 views
0

我似乎有一个使用Java处理SVG的问题,使用batikSVG。我可以在JSVG Canvas上很好地显示SVG,但是当我使用getSVGDocument尝试画布的SVGDocument时,它似乎返回null。为什么是这样,我怎样才能得到实际的文件?JSVGCanvas.getSVGDocument()返回null?

jSVGCanvas1.setURI(new File("circle.svg").toURI().toString()); 

    jSVGCanvas1.setDocumentState(JSVGCanvas.ALWAYS_DYNAMIC); 
    SVGDocument doc = jSVGCanvas1.getSVGDocument(); 
    if(doc==null)System.out.println("null"); 

最后一行的测试,其中文档为空,它总是打印空。请帮忙!

回答

1

您将需要等待文档加载并发生异步。像这样...

jSVGCanvas1.addSVGDocumentLoaderListener(new SVGDocumentLoaderAdapter() { 
     public void documentLoadingCompleted(SVGDocumentLoaderEvent e) { 
      SVGDocument doc = jSVGCanvas1.getSVGDocument(); 
      if(doc==null)System.out.println("null"); 
     } 
    }); 
+0

非常感谢! –

+0

嗨,我还有一个问题,如果你会如此友善的回答。如果我想更改“documentLoadingCompleted”方法之外的属性,该怎么办?例如在按下按钮时更改属性。然后怎样呢?只需更改元素的属性不起作用。 –