为SVG元素设置OnClickListener

时间:2011-10-12 10:36:56

标签: blackberry java-me

假设我有一个SVG元素,如下所示。如何添加onClickListener?

solved, see below.

2 个答案:

答案 0 :(得分:2)

我猜你的意思是FieldChangeListener而不是OnClickListener(错误的平台;)。 SVGImage不是RIM开发对象的一部分,所以不幸的是你无法做到。任何能够拥有FieldChangeListner的东西都必须是net.rim.device.api.ui.Field类的子类。

答案 1 :(得分:0)

以防万一有人对它是如何完成感兴趣的......

try {
            InputStream inputStream = getClass().getResourceAsStream("/svg/sphere1.svg");

            _image = (SVGImage)SVGImage.createImage(inputStream, null);   

            _animator = SVGAnimator.createAnimator(_image, "net.rim.device.api.ui.Field");

            _document = _image.getDocument(); 

            _svg123 = (SVGElement)_document.getElementById("123");


        }
        catch (IOException e) { e.printStackTrace(); }
        Field _svgField = (Field)_animator.getTargetComponent();        

        _svgField.setBackground(blackBackground);

        add(_svgField);

        _svg123.addEventListener("click", this, false);
        _svg123.addEventListener("DOMFocusIn", this, false);
        _svg123.addEventListener("DOMFocusOut", this, false);


    }

    public void handleEvent(Event evt) {

        if( _svg123 == evt.getCurrentTarget() && evt.getType() == "click" ){ Dialog.alert("You clicked 123"); }

        if( _svg123 == evt.getCurrentTarget() && evt.getType() == "DOMFocusIn" ) { ((SVGElement) _document.getElementById("outStroke123")).setTrait("fill", "#FF0000");     }
        if( _svg123 == evt.getCurrentTarget() && evt.getType() == "DOMFocusOut" ) { ((SVGElement) _document.getElementById("outStroke123")).setTrait("fill", "#2F4F75");    }

    }