Что я хочу сделать, это вставить новый элемент в SVGDocument, взятый из холста JSVG, чтобы он автоматически отображался и мог быть просмотрен.
Итак, у меня есть JSVGCanvas с именем SVGcanvas, и в LoadEventDispatcher я получаю SVGDocument с именем doc, как этот код:
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, и, поскольку я установил для Document State of SVG Canvas значение ALWAYS_DYNAMIC, я подумал, что он будет обновляться автоматически. Я что-то пропустил?