Please see: http://xml.apache.org/batik/faqs.html#faq-21
Grant Mc Auley wrote:
Hello,
My simple test program (relevant code below) loads an SVG file into a JSVGCanvas. Clicking a button calls a method that iteratively resizes a circle in the SVG document.
What I am observing is this: 1) After clicking the toolbar button, I do not see the circle resize unless I move my mouse into the canvas. 2) Further, unless I continually move my mouse over the canvas I do not see the iterative resizing. That is, when I continuously move the mouse, I see the circle change size every second. When I stop, the circle size does not change. When I move again, I see the updates. If I move outside of the canvas I see no updates.
How are canvas updates related to mouse position and movement? Is there something else that I must do to see live or dynamic canvas updates?
// ------- Code:
JSVGCanvas canvas = new JSVGCanvas(); File f = new File(shapes.svg"); String parser = XMLResourceDescriptor.getXMLParserClassName(); SAXSVGDocumentFactory factory = new SAXSVGDocumentFactory(parser); Document doc = factory.createDocument(f.toURL().toString()); canvas.setDocument(doc); canvas.setDocumentState(JSVGCanvas.ALWAYS_DYNAMIC);
...
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { Thread t = new Thread(new Runnable() { public void run() { resizeCircle(); } }); t.start(); }
});
...
private void resizeCircle() throws DOMException {
SVGDocument doc = canvas.getSVGDocument(); Element el = doc.getElementById("circleOne"); for (int i = 0; i < 10; i++) {
if (el.getAttribute("r").equals("20")) { // initial value of r (radius) is 20 el.setAttribute("r", "50"); else el.setAttribute("r", "20"); try { Thread.sleep(1000); } catch (InterruptedException ex) { }
}
} // -------
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]