i copied a code in 
http://wiki.apache.org/xmlgraphics-batik/BackgroundGlassPaneTutorial here 
and tried playing with the code for practice and this is what i have came
up:

*** CODE ***
import javax.swing.*;
import org.apache.batik.dom.svg.SVGDOMImplementation;
import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.apache.batik.swing.*;
import org.w3c.dom.events.*;

public class MapCanvas {

        protected JSVGCanvas canvas;
        protected JLabel target;
        
        public MapCanvas(JPanel panel) {
        panel.removeAll();
        canvas = new JSVGCanvas();
        canvas.setDocumentState(JSVGCanvas.ALWAYS_DYNAMIC);
        canvas.setSize(400,400);
        canvas.setDocument(buildDocument());
        panel.add(canvas);
        panel.repaint();
    }
    
    protected Document buildDocument() {
        DOMImplementation impl =
SVGDOMImplementation.getDOMImplementation();
        String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI;
        Document doc = impl.createDocument(svgNS, "svg", null);
        
        // get the root element (the svg element)
        Element svgRoot = doc.getDocumentElement();
        
        // set the width and height attribute on the root svg element
        svgRoot.setAttributeNS(null, "width", "400");
        svgRoot.setAttributeNS(null, "height", "400");
        
        // create the array of rectangles
        Element g = doc.createElementNS(svgNS, "g");
        g.setAttributeNS(null, "id", "rectangles");
        
        for (int x = 10; x < 200 ; x += 30) {
            for (int y = 10; y < 200; y += 30) {
                Element rectangle = doc.createElementNS(svgNS, "rect");
                rectangle.setAttributeNS(null, "x", "" + x);
                rectangle.setAttributeNS(null, "y", "" + y);
                rectangle.setAttributeNS(null, "width", "20");
                rectangle.setAttributeNS(null, "height", "20");
                rectangle.setAttributeNS(null, "style", "fill:blue");
                rectangle.setAttributeNS(null, "id", "rect: " + x + ", "+
y);
                // attach the rectangle to the g element
                g.appendChild(rectangle);
            }
        }
        svgRoot.appendChild(g);
        
        Element g2 = doc.createElementNS(svgNS, "g");
        g.setAttributeNS(null, "id", "circles");
        
        for (int x = 210; x < 400 ; x += 30) {
            for (int y = 210; y < 400; y += 30) {
                Element circle = doc.createElementNS(svgNS, "circle");
                circle.setAttributeNS(null, "cx", "" + x);
                circle.setAttributeNS(null, "cy", "" + y);
                circle.setAttributeNS(null, "r", "10");
                circle.setAttributeNS(null, "style", "fill:red");
                circle.setAttributeNS(null, "id", "circle: " + x + ", "+ y);
                // attach the rectangle to the g element
                g2.appendChild(circle);
            }
        }
        
        svgRoot.appendChild(g2);
        
        return doc;
    }
    
    public void addGlassPane() {
        String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI;
        Document doc = canvas.getSVGDocument();
        Element rectangle = doc.createElementNS(svgNS, "rect");
        rectangle.setAttributeNS(null, "x", "0");
        rectangle.setAttributeNS(null, "y", "0");
        rectangle.setAttributeNS(null, "width", "400");
        rectangle.setAttributeNS(null, "height", "400");
        rectangle.setAttributeNS(null, "style",
"fill:none;pointer-events:fill");
        rectangle.setAttributeNS(null, "id", "glasspane");
        Element svgRoot = doc.getDocumentElement();
        
        svgRoot.insertBefore(rectangle, doc.getElementById("rectangles"));

    }
    
    public void registerListeners(JLabel target) {
        //this label provides feedback on the selected item
        this.target = target;
        // Gets an element from the loaded document.
        // document is your SVGDocument
        Element elt = canvas.getSVGDocument().getElementById("glasspane");
        EventTarget t = (EventTarget)elt;
        t.addEventListener("click", new GlassPaneClick(), false);
        
        Element elt2 = canvas.getSVGDocument().getElementById("rectangles");
        EventTarget t2 = (EventTarget)elt2;
        t2.addEventListener("click", new ObjectClick(), false);
        
        Element elt3 = canvas.getSVGDocument().getElementById("circles");
        EventTarget t3 = (EventTarget)elt3;
        t3.addEventListener("click", new CircleClick(), false);
    }
    
    public class GlassPaneClick implements EventListener {
        public void handleEvent(Event evt) {
            target.setText("Glasspane event
"+((Element)evt.getTarget()).getAttribute("id"));
            target.repaint();
        }
    }
    
    public class ObjectClick implements EventListener {
        public void handleEvent(Event evt) {
            target.setText("Rectangles event
"+((Element)evt.getTarget()).getAttribute("id"));
            target.repaint();
        }
    }
    
    public class CircleClick implements EventListener {
        public void handleEvent(Event evt) {
            target.setText("Circles event
"+((Element)evt.getTarget()).getAttribute("id"));
            target.repaint();
        }
    }
}

*** END OF CODE ***

i don't know what's wrong. i get the error java.lang.NullPointerException in
the line:
      t2.addEventListener("click", new ObjectClick(), false);

why am i having these errors?
-- 
View this message in context: 
http://www.nabble.com/batik-confusion...-tf3681701.html#a10346772
Sent from the Batik - Users mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to