Dear All, I have some problem with Batik Mouse Click event . Document of MouseEvent.getButton() says return value of 0 indicates left button, 1 for middle button, 2 for right button. I have wrote a simple java file to test it, however the getButton method always returns me 1. Does anyone know if I did something wrong?
Thank you very much. Kind regards, Qian Here is the code, It's also in the attachment /* * TestBatikMouseClick.java * * Created on September 18, 2007, 5:18 PM */ package testsvg; import org.apache.batik.dom.svg.SVGDOMImplementation; import org.apache.batik.swing.JSVGCanvas; import org.w3c.dom.DOMImplementation; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.events.EventListener; import org.w3c.dom.events.EventTarget; public class TestBatikMouseClick extends javax.swing.JFrame { Document doc; Element svgRoot; JSVGCanvas svgCanvas; String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI; /** Creates new form TestBatikMouseClick */ public TestBatikMouseClick() { initComponents(); svgCanvas = new JSVGCanvas(); svgCanvas.setDocumentState(JSVGCanvas.ALWAYS_DYNAMIC); DOMImplementation impl = SVGDOMImplementation.getDOMImplementation (); String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI; doc = impl.createDocument(svgNS, "svg", null); svgRoot = doc.getDocumentElement(); svgRoot.setAttribute("viewBox","0 0 500 500"); svgRoot.setAttribute("preserveAspectRatio","xMinYMin meet"); svgRoot.setAttributeNS(svgNS, "width", "500"); svgRoot.setAttributeNS(svgNS, "height", "500"); Element basicElement = doc.createElementNS(svgNS, "rect"); basicElement.setAttributeNS(null, "x", "20"); basicElement.setAttributeNS(null, "y", "20"); basicElement.setAttributeNS(null, "height", "100"); basicElement.setAttributeNS(null, "width", "100"); basicElement.setAttributeNS(null, "style", "fill:white;stroke:black;stroke-width:5;opacity:0.5"); svgRoot.appendChild(basicElement); EventTarget t = (EventTarget)basicElement; t.addEventListener("click", new EventListener(){ public void handleEvent(org.w3c.dom.events.Event evt) { doMouseClickEvent(evt); } }, false); svgCanvas.setDocument(doc); jPanelMain.add(svgCanvas); } public void doMouseClickEvent(org.w3c.dom.events.Event evt){ org.w3c.dom.events.MouseEvent mEvt = (org.w3c.dom.events.MouseEvent )evt; System.out.println("[BasicElementSVG::doMouseClickEvent] element Mouse Clicked -- type="+mEvt.getType()+" button="+mEvt.getButton()); } private void initComponents() { jPanelMain = new javax.swing.JPanel(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); jPanelMain.setLayout(new java.awt.BorderLayout()); jPanelMain.setPreferredSize(new java.awt.Dimension(500, 500)); getContentPane().add(jPanelMain, java.awt.BorderLayout.CENTER); pack(); } /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new TestBatikMouseClick().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JPanel jPanelMain; // End of variables declaration }
/* * TestBatikMouseClick.java * * Created on September 18, 2007, 5:18 PM */ package testsvg; import org.apache.batik.dom.svg.SVGDOMImplementation; import org.apache.batik.swing.JSVGCanvas; import org.w3c.dom.DOMImplementation; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.events.EventListener; import org.w3c.dom.events.EventTarget; /** * * @author qianli */ public class TestBatikMouseClick extends javax.swing.JFrame { Document doc; Element svgRoot; JSVGCanvas svgCanvas; String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI; /** Creates new form TestBatikMouseClick */ public TestBatikMouseClick() { initComponents(); svgCanvas = new JSVGCanvas(); svgCanvas.setDocumentState(JSVGCanvas.ALWAYS_DYNAMIC); DOMImplementation impl = SVGDOMImplementation.getDOMImplementation(); String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI; doc = impl.createDocument(svgNS, "svg", null); svgRoot = doc.getDocumentElement(); svgRoot.setAttribute("viewBox","0 0 500 500"); svgRoot.setAttribute("preserveAspectRatio","xMinYMin meet"); svgRoot.setAttributeNS(svgNS, "width", "500"); svgRoot.setAttributeNS(svgNS, "height", "500"); Element basicElement = doc.createElementNS(svgNS, "rect"); basicElement.setAttributeNS(null, "x", "20"); basicElement.setAttributeNS(null, "y", "20"); basicElement.setAttributeNS(null, "height", "100"); basicElement.setAttributeNS(null, "width", "100"); //basicElement.setAttributeNS(null, "style", "fill:white;stroke:black;stroke-width:5;opacity:0.5"); svgRoot.appendChild(basicElement); EventTarget t = (EventTarget)basicElement; t.addEventListener("click", new EventListener(){ public void handleEvent(org.w3c.dom.events.Event evt) { doMouseClickEvent(evt); } }, false); svgCanvas.setDocument(doc); jPanelMain.add(svgCanvas); } public void doMouseClickEvent(org.w3c.dom.events.Event evt){ org.w3c.dom.events.MouseEvent mEvt = (org.w3c.dom.events.MouseEvent)evt; System.out.println("[BasicElementSVG::doMouseClickEvent] element Mouse Clicked -- type="+mEvt.getType()+" button="+mEvt.getButton()); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents private void initComponents() { jPanelMain = new javax.swing.JPanel(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); jPanelMain.setLayout(new java.awt.BorderLayout()); jPanelMain.setPreferredSize(new java.awt.Dimension(500, 500)); getContentPane().add(jPanelMain, java.awt.BorderLayout.CENTER); pack(); }// </editor-fold>//GEN-END:initComponents /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new TestBatikMouseClick().setVisible(true); } }); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JPanel jPanelMain; // End of variables declaration//GEN-END:variables }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]