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