带有DOM /蜡染的事件clic:恢复引用符号的use标签
晚上好,
我目前正在研究Java中的图形应用程序(处理svg文件),使用batik直接操作DOM文档svg。
我在“符号”标签中声明的各种元素由标签“使用”使用和/显示。 这里的文件svg:
我在svg的一个元素上添加了一个事件:
((EventTarget) objAdd.getNodeUse()).addEventListener( SVGConstants.SVG_MOUSEDOWN_EVENT_TYPE, new EObject(), false); ((EventTarget) objAdd.getNodeDefs()).addEventListener( SVGConstants.SVG_MOUSEDOWN_EVENT_TYPE, new EObject(), false);
在一个区域(与组元素g匹配)
Element elt = doc.getElementById("nameZone1"); EventTarget t = (EventTarget)elt; t.addEventListener(SVGConstants.SVG_MOUSEDOWN_EVENT_TYPE, new EObject(), false);
EObject类实现了org.w3c.dom.events.EventListener:
import org.w3c.dom.Element; import org.w3c.dom.events.Event; public class EObject implements org.w3c.dom.events.EventListener { public void handleEvent(Event evt) { System.out.println("YOUPIIII JE SUIS CLIQUE"); Element e = (Element) evt.getCurrentTarget(); } }
当单击一个对象(理论上是一个节点使用)时,handleEvent函数返回元素组g(id =“nameZone1)。
我想检索与所点击的项目相对应的项目“使用”。
当我删除此代码时:
Element elt = doc.getElementById("nameZone1"); EventTarget t = (EventTarget)elt; t.addEventListener(SVGConstants.SVG_MOUSEDOWN_EVENT_TYPE, new EObject(), false);
点击元素不会产生任何结果。
这可能就是为什么getCurrentTarget()是引用g匹配项的原因。
问题肯定肯定是事件添加项目。
再次,如果你有一个想法,欢迎..
感谢您的帮助。
默认情况下,特别是符号不是用SVG绘制的。
如果您想将eventListener添加到use元素,则必须为其指定id。
在SVG文件中:
然后你可以得到它doc.getElementById(“use3430”);
问候