Re: [Gvsig_desarrolladores] Ayuda con la siguiente excepción
Francisco José Peñarrubia
fpenarru en gmail.com
Lun Jun 16 10:35:35 CEST 2008
Hola Leonid.
Prueba a llamar a las métodos start() y stop() antes del bucle for.
Quizás con eso te funcione.
lyrVect.getSource().start();
for(int j = sel.nextSetBit(0); j >= 0; j = sel.nextSetBit(j+1)){
.
.
.
lyrVect.getSource().stop();
Saludos y suerte.
Fran Peñarrubia.
Leonid Mendoza Robaina escribió:
>
> Hola a todos los desarrolladores:
>
> Estoy programando una extensión con el objetivo de imprimir en
> pantalla las coordenadas de los rectángulos (en ingles a esto se le
> conoce como Bounding Box Region) que contienen las geometrías
> seleccionadas por el usuario en una capa vectorial que ha sido cargada
> en una vista.
> El código de la extensión es el siguiente:
>
> public void execute(String actionCommand) {
> if (actionCommand.equals("1_SET_ANNOTATION")) {
> printRect();
> }
> }
> private void printRect(){
> try {
> View vista = (View) PluginServices.getMDIManager().getActiveWindow();
> MapControl mapCtrl = vista.getMapControl();
>
> FLayer[] actives = mapCtrl.getMapContext().getLayers().getActives();
> for (int i=0; i < actives.length; i++)
> {
> System.out.println("capa "+ i);
> if (actives[i] instanceof FLyrVect ){
> FLyrVect lyrVect = (FLyrVect) actives[i];
> FBitSet sel = lyrVect.getRecordset().getSelection();
> for(int j = sel.nextSetBit(0); j >= 0; j = sel.nextSetBit(j+1)){
> IGeometry ig = lyrVect.getSource().getShape(j);//la
> execption se lanza en esta linea
> if(ig != null){
> Rectangle2D rect = ig.getBounds2D();
> //Imprimir coordenadas del rectángulo.
>
>
> }
> }
> }
> }
> }catch (DriverException e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }catch (DriverIOException e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }
> }
>
> En ejecución se lanza NullPointerException en la llamada al método
> getShape(j) en la línea siguiente:
> IGeometry ig = lyrVect.getSource().getShape(j);
>
> La traza de la excepción es la siguiente:
> java.lang.NullPointerException
> at
> com.iver.cit.gvsig.fmap.drivers.shp.IndexedShpDriver.getPositionForRecord(Unknown
> Source)
> at
> com.iver.cit.gvsig.fmap.drivers.shp.IndexedShpDriver.getShape(Unknown
> Source)
> at
> com.iver.cit.gvsig.fmap.layers.VectorialFileAdapter.getShape(Unknown
> Source)
> at
> com.iver.cit.gvsig.semanticAnnotation.SetAnnotationExtension.printRect(SetAnnotationExtension.java:81)
> at
> com.iver.cit.gvsig.semanticAnnotation.SetAnnotationExtension.execute(SetAnnotationExtension.java:25)
> at
> com.iver.andami.plugins.ExtensionDecorator.execute(ExtensionDecorator.java:88)
> at
> com.iver.andami.ui.mdiFrame.MDIFrame.actionPerformed(MDIFrame.java:616)
> at
> javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
> at
> javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
> at
> javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
> at
> javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
> at
> javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)
> at
> java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:231)
> at
> java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:231)
> at java.awt.Component.processMouseEvent(Component.java:5488)
> at javax.swing.JComponent.processMouseEvent(JComponent.java:3093)
> at java.awt.Component.processEvent(Component.java:5253)
> at java.awt.Container.processEvent(Container.java:1966)
> at java.awt.Component.dispatchEventImpl(Component.java:3955)
> at java.awt.Container.dispatchEventImpl(Container.java:2024)
> at java.awt.Component.dispatchEvent(Component.java:3803)
> at
> java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
> at
> java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
> at
> java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
> at java.awt.Container.dispatchEventImpl(Container.java:2010)
> at java.awt.Window.dispatchEventImpl(Window.java:1766)
> at java.awt.Component.dispatchEvent(Component.java:3803)
> at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
> at
> com.iver.andami.ui.AndamiEventQueue.dispatchEvent(AndamiEventQueue.java:58)
> at
> java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
> at
> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
> at
> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
> at
> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
> at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
>
>
> Por favor, alguien pudiera ayudarme a saber porqué se lanza la
> excepción y a corregir el código.
> Muchas gracias a todos,
>
> Leonid Mendoza
> Estudiante de Ciencia de La Computación
> Universidad de La Habana.
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en runas.cap.gva.es
> http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
>
Más información sobre la lista de distribución gvSIG_desarrolladores