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 : 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);
à 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 : 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);
mais cela ne fait rien non plus.

Auriez vous une idée à me suggérer ?

Merci d’avance