I think if you've changed the SVG namespaces to be null as suggested in the
previous reply, your text is probably rendering, but being rendered outside
the visible canvas... changing the values of X and Y for the text would
probably do it
This worked for me, (modified version of your code)....
import java.awt.*;
import javax.swing.*;
import org.apache.batik.bridge.UpdateManager;
import org.apache.batik.dom.svg.SVGDOMImplementation;
import org.apache.batik.swing.JSVGCanvas;
import org.apache.batik.swing.gvt.GVTTreeRendererAdapter;
import org.apache.batik.swing.gvt.GVTTreeRendererEvent;
import org.apache.batik.swing.svg.GVTTreeBuilderEvent;
import org.apache.batik.swing.svg.GVTTreeBuilderListener;
import org.apache.batik.swing.svg.SVGLoadEventDispatcherAdapter;
import org.apache.batik.swing.svg.SVGLoadEventDispatcherEvent;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Text;
import org.w3c.dom.svg.SVGDocument;
public class TextTest
{
//~ Methods
public static void main(String[] args)
{
final JSVGCanvas svgCanvas = new JSVGCanvas();
svgCanvas.setDocumentState(JSVGCanvas.ALWAYS_DYNAMIC);
final String nSvg = SVGDOMImplementation.SVG_NAMESPACE_URI;
Document doc =
SVGDOMImplementation.getDOMImplementation().createDocument(nSvg,
"svg", null);
svgCanvas.setDocument(doc);
JPanel panel = new JPanel();
panel.add(svgCanvas);
svgCanvas.addSVGLoadEventDispatcherListener(new
SVGLoadEventDispatcherAdapter() {
public void
svgLoadEventDispatchStarted(SVGLoadEventDispatcherEvent event)
{
Element root =
svgCanvas.getSVGDocument().getDocumentElement();
root.setAttributeNS(nSvg, "width", "400");
root.setAttributeNS(nSvg, "height", "400");
svgCanvas.setBackground(Color.RED);
}
});
svgCanvas.addGVTTreeRendererListener(new GVTTreeRendererAdapter() {
public void gvtRenderingPrepare(GVTTreeRendererEvent e) {}
public void gvtRenderingCompleted(GVTTreeRendererEvent e)
{
UpdateManager updateManager =
svgCanvas.getUpdateManager();
updateManager.getUpdateRunnableQueue().invokeLater(new Runnable() {
public void run()
{
String nSvg =
SVGDOMImplementation.SVG_NAMESPACE_URI;
SVGDocument doc =
svgCanvas.getSVGDocument();
Element text = doc.createElementNS(nSvg,
"text");
text.setAttributeNS(null, "font-size",
"15");
text.setAttributeNS(null, "fill", "black");
text.setAttributeNS(null, "x", "100");
text.setAttributeNS(null, "y", "100");
Text textNode = doc.createTextNode("hello");
text.appendChild(textNode);
//
Element rect = doc.createElementNS(nSvg, "rect");
//
rect.setAttributeNS(null, "x", "100");
//
rect.setAttributeNS(null, "y", "100");
//
rect.setAttributeNS(null, "width", "40");
//
rect.setAttributeNS(null, "height", "50");
//
rect.setAttributeNS(null, "style", "fill:green");
//
rect.appendChild(text);
//
doc.getDocumentElement().appendChild(rect);
doc.getDocumentElement().appendChild(text);
}
});
}
});
JFrame frame = new JFrame();
frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]