Bonjour,
J’essaie depuis hier de manipuler du svg en java.
J’utilise donc http://xmlgraphics.apache.org/batik/
J’ai un panel qui hérite de JSVGCanvas dans lequel j’affiche un svg.
Le but étant de déterminer dans quel layer du svg je me situe, j’essaie pour le moment de changer la couleur d’un élément précis lorsque je clics sur celui-ci.
à l’aide du debugger je vois bien que qu’a chaque évènement je rentre dans la méthode ‘handleEvent’ mais la couche sélectionné ne devient jamais verte.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 doc = getSVGDocument(); svgRoot = doc.getDocumentElement(); svgRoot.setAttributeNS(null, "width", String.valueOf(getWidth())); svgRoot.setAttributeNS(null, "height", String.valueOf(getHeight())); ((EventTarget)doc.getElementById("layer1")). addEventListener("mousedown", new EventListener() { public void handleEvent(Event evt) { ((Element)evt.getTarget()).setAttributeNS(doc.getNamespaceURI(), "fill","green"); } }, false);
J’ai alors eu envie d’essayer de créer un carré lors de ce même évènement.
mais cela ne fait rien non plus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Element groupe = svgDocument.getElementById("layer1"); Element new_node = svgDocument.createElementNS(doc.getNamespaceURI(),"rect"); new_node.setAttributeNS(doc.getNamespaceURI(),"x","0"); new_node.setAttributeNS(doc.getNamespaceURI(),"y","0"); new_node.setAttributeNS(doc.getNamespaceURI(),"width","200"); new_node.setAttributeNS(doc.getNamespaceURI(),"height","200"); new_node.setAttributeNS(doc.getNamespaceURI(),"fill","red"); groupe.appendChild(new_node);
Auriez vous une idée à me suggérer ?
Merci d’avance
Partager