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?
| ||||
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. |
Etiquetas: |