You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-users@xmlgraphics.apache.org by Josep María Formentí <jm...@aia.ptv.es> on 2003/03/06 21:20:51 UTC
Problem to display SVGs
Hello!
I'm using Batik and it's very useful. Now, I have a problem and I don't find
the mistake.
I'm trying to put many SVG in a java.swing.JTabbedPane where every tab
contain a SVG. When SVG are big, SVG are'nt displayed.
This is the function where I create a SVG:
public SVGDocument generaGraficoSVG() {
int number_elements=101;
DOMImplementation impl =
SVGDOMImplementation.getDOMImplementation();
String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI;
SVGDocument doc = (SVGDocument)impl.createDocument(svgNS,
"svg", null);
// obtenemos el elemento raiz (svg)
Element svgRoot = doc.getDocumentElement();
Element script = doc.createElement("script");
script.setAttributeNS(null,"type","text/ecmascript");
Text txt = doc.createTextNode("function showDialog(msg) {
alert(msg); }");
script.appendChild(txt);
svgRoot.appendChild(script);
//creamos lineas de separación entre subestaciones
Element grup_lineas = doc.createElementNS(svgNS, "g");
grup_lineas.setAttributeNS(null, "id", "lineas_subs");
int space=0;
for(int i=0;i<number_elements;i++) {
Element linea = doc.createElementNS(svgNS, "line");
linea.setAttributeNS(null,"x1",String.valueOf(space));
linea.setAttributeNS(null,"y1","0");
linea.setAttributeNS(null,"x2",String.valueOf(space));
linea.setAttributeNS(null,"y2","300");
linea.setAttributeNS(null,"stroke","black");
grup_lineas.appendChild(linea);
Element linea_valor = doc.createElementNS(svgNS,
"line");
linea_valor.setAttributeNS(null,"x1",String.valueOf(space+25));
linea_valor.setAttributeNS(null,"y1","50");
linea_valor.setAttributeNS(null,"x2",String.valueOf(space+25));
linea_valor.setAttributeNS(null,"y2","300");
linea_valor.setAttributeNS(null,"stroke","red");
linea_valor.setAttributeNS(null,"style","stroke-width:5");
linea_valor.setAttributeNS(null,"onclick","showDialog('"+i+"')");
grup_lineas.appendChild(linea_valor);
space+=50;
}
svgRoot.appendChild(grup_lineas);
// asignamos atributos a elemento raiz
svgRoot.setAttributeNS(null, "width",
String.valueOf(space));
svgRoot.setAttributeNS(null, "height", "300");
return doc;
}
if number_elements is 11, for example, then the program works. This is the
function where I put every SVG in a tab (where there is a JSVGCanvas in
every tab):
public void dibujaReports(ListaReportsGraficos lista_reports) {
LinkedList reports=lista_reports.getReports();
ReportGrafico report;
try {
for (Iterator i=reports.iterator();i.hasNext();) {
report=(ReportGrafico)i.next();
JSVGCanvas svgCanvas = new JSVGCanvas();
svgCanvas.setSVGDocument(report.generaGraficoSVG());
JScrollPane sc=new JScrollPane(svgCanvas);
etiquetas_reports.addTab(
report.getNombre(),null,sc,"" );
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
where etiquetas_reports is a java.swing.JTabbedPane
It doesn't catch any exception.
I have another problem. The function showDialog in SVG doesn't work. When
you click on a line appears:
scripting error: "showDialog" is not defined.
Could you help me?
Thanks a lot.
Josep Mª
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-users-help@xml.apache.org