[Gvsig_desarrolladores] setSelection desde un IMonitorableTask

Alvaro Zabala azabala en gmail.com
Lun Mayo 14 21:09:33 CEST 2007


Ahora mismo intuyo la causa, pero no la solución:

cuando visualizas la capa vectorial con el componente de GUI table, éste
automáticamente se registra como listener de los eventos de selección del
recordset de la capa, de forma que cuando cambie una selección ésta se
refleje en el componente gráfico.

Ahora bien, como IMonitorableTask corre en un hilo aparte, cuando desde esta
tarea tratas de cambiar la selección, el listener tratará de que esto se
refleje en el componente de Swing....y me parece que los componentes Swing
solo pueden ser accedidos desde el event-dispatcher thread.

De esto se habla en este enlace:
http://java.sun.com/products/jfc/tsc/articles/threads/threads3.html

No obstante, no tengo muy claro como esquivar este problema con el API de
ITask de gvSIG....(que usa SwingWorker, pero una versión anterior a la del
artículo).
Habrá que investigarlo.

Un saludo.






2007/5/14, Diego Guerrero Sevilla <diego.guerrero en uclm.es>:
>
> Hola,
>
> Necesito establecer una selección en una capa vectorial (concretamente un
> shape) desde un tarea monitorizable (IMonitorableTask):
>
>         recordset.setSelection(fbs);
>
> En principio no había problema, pero si antes de hacerlo he visualizado la
> tabla de atributos de la capa vectorial, se lanza una excepción al
> establecer
> la selección:
>
> DEBUG [Thread-19] (NotificationManager.java:99) -
> java.lang.RuntimeException: No Event Dispatch Thread
>         at com.iver.andami.ui.mdiFrame.MDIFrame.enableControls(
> MDIFrame.java:841)
>         at
> com.iver.cit.gvsig.project.documents.table.gui.Table.updateSelection(
> Table.java:366)
>         at
>
> com.iver.cit.gvsig.project.documents.table.gui.Table$TableSelectionListener.selectionChanged
> (Table.java:1393)
>         at
> com.iver.cit.gvsig.fmap.layers.SelectionSupport.fireSelectionEvents(
> SelectionSupport.java:127)
>         at
> com.iver.cit.gvsig.fmap.layers.SelectionSupport.setSelection(
> SelectionSupport.java:66)
>         at
> com.iver.cit.gvsig.fmap.layers.SelectableDataSource.setSelection(
> SelectableDataSource.java:348)
>
> Hay forma de evitarlo?
>
> Un Saludo,
>
>         Diego.
>
>
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en runas.cap.gva.es
> http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
>
>


-- 
Alvaro Zabala Ordóñez
Tlf: 657235082
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://runas.cap.gva.es/pipermail/gvsig_desarrolladores/attachments/20070514/91773ff0/attachment-0001.htm


Más información sobre la lista de distribución gvSIG_desarrolladores