Foros del Web » Programación para mayores de 30 ;) » Java »

Usar concurrencia con guis

Estas en el tema de Usar concurrencia con guis en el foro de Java en Foros del Web. como puedo utilizar los threads con una gui, por ejemplo si yo creo 2 ventanas con 1 boton y le de click en el boton ...
  #1 (permalink)  
Antiguo 03/12/2011, 10:23
 
Fecha de Ingreso: octubre-2011
Mensajes: 2
Antigüedad: 13 años, 1 mes
Puntos: 0
Pregunta Usar concurrencia con guis

como puedo utilizar los threads con una gui,
por ejemplo si yo creo 2 ventanas con 1 boton y le de click en el boton
se bloque el boton en ambas?
  #2 (permalink)  
Antiguo 05/12/2011, 04:55
Avatar de FiruzzZ  
Fecha de Ingreso: diciembre-2007
Ubicación: en casa
Mensajes: 470
Antigüedad: 16 años, 11 meses
Puntos: 41
Respuesta: Usar concurrencia con guis

Thread? Innecesarios..
Concurrencia? cuando hablás de GUI's creo que queda mejor decir MODAL, MODALESS.


Implementá el evento actionPerformed del botón que va deshabilitar a ambos .

this.boton.setEna....
otraVentana.getBoton().setEnabled(.....
y listo..

Nota: por supuesto, o la class controller que desarrolles tiene que tener una instancia de ambas ventanas, o la ventana1 debe tener una instancia de ventana2 para poder tener "acceso" al botón" de esta (y así poder deshabilitarlo) y mas cosas...
__________________
BadProgrammerException!
  #3 (permalink)  
Antiguo 05/12/2011, 05:08
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Usar concurrencia con guis

Hola:

Cuando das click en un botón, las ventanas no se refrescan hasta que termines de ejecutar el código en ese botón. Puedes pulsar entre tanto otro botón y el evento se encolará hasta que termine la ejecución del primero, pero no verás como el botón se pulsa y despulsa, ya que las ventanas no se refrescan/repintan. De esta forma, tampoco tiene en principio problemas de concurrencia, porque las acciones de cada botón se van encolando y ejecutando en orden de una en una.

Sin embargo, si el código a ejecutar cuando se pulsa un botón va a tardar un tiempo apreciable para un ser humano, conviene lanzar un hilo y ejecutar ese código en un hilo separado, más que nada para que al humano no le de la impresión de que su interfaz de usuario se ha quedado bloqueada (no le responden los botones ni se repinta si pasa otra ventana por encima). En ese caso sí puedes tener problemas de concurrencia, ya que estás lanzando hilos separados que correrán simultáneamente cada vez que el usuario pulse un botón.

Si por bloquear te refieres a lo que indica FiruzzZ, pues lo que el te ha dicho. Depende de si la segunda ventana es o no modal, pero no tiene nada que ver con la pulsación del botón. Si abres una segunda ventana modal, la primera se queda bloqueada (no se puede pulsar ningún botón en ella) hasta que la segunda ventana (la modal) se cierre. Para deshabilitar botones (que no se puedan pulsar), lo dicho por FiruzzZ, usa setEnabled() del botón en cuestión.

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Etiquetas: concurrencia, usar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:48.