Batik et manipulation de svg.
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.
Code:
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); |
à 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.
J’ai alors eu envie d’essayer de créer un carré lors de ce même évènement.
Code:
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); |
mais cela ne fait rien non plus.
Auriez vous une idée à me suggérer ?
Merci d’avance