Jbutton se queda bloqueado en un for

Hola, me gustaría consultarles como se puede hacer que un jbottom no se quede bloqueo mientras se corre un for o while.

Me explico mejor al dar clic en un botón y este tiene un "for" bastante largo el programa se me queda bloqueado y hace todas las rutinas que tiene pendiente hasta el final, ya sea poner texto en un textarea, todo lo hace al final, quisiera que se hiciera simultáneamente que se alla corriendo el proceso y se vallan realizando los cambios.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de neko069

Threads

Necesitas un thread en segundo plano que corra los procesos que necesitas, así no se bloquea el thread principal que es el que actualmente se te bloquea.
Para swing, puedes usar el  , te dejo el tutorial de Oracle para concurrencia en swing en ésta liga.
Léelo, hazte un ejemplo, y si tienes alguna duda más puntual, ya la checamos.
Suerte!

Threads

nunca he hecho un Threads , no se si tengo que modificar el codigo actual o si tengo que crear una nueva clase, sera que me podrias dar un ejemplo sencillo de como se hace?

Imagen de neko069

Una recomendación, invierte

Una recomendación, invierte tu tiempo leyendo.
En fin, ejemplos acá.

Una recomendación, invierte

Una recomendación sino ayudaras mejor ni hables... gracias ninguno de tus ejemplos sirvió pero lo conseguí por otro lado... Solo lo hice para probar si seguían apoyando de esta manera a quien tenia dudas pero este foro sigue siendo igual... así mejor ni pierdo mi tiempo haciendo consultas...

Imagen de ezamudio

SwingWorker

Busca algo de documentación de la Swing worker thread. Swing usa un hilo (creo que el hilo principal de la aplicación) para pintar las pantallas y hacer todo lo relacionado con la GUI. Por lo tanto, es importante que cualquier cosa que vaya a tomar algo de tiempo se haga en otro hilo. Pero la sincronización es algo compleja, por lo que en Java 6 se introdujo una clase nueva SwingWorker, para facilitar la realización de tareas prolongadas en un hilo separado y que no se quede bloqueada la GUI.

Gracias

package SMSEngine;

public class Thread1 extends Thread
{
public Thread1()
{
super();
}
public void run()
{
SendMessage.uso = 1;
SendMessage.enviar();
}
}

Esta clase se usa para llamar al proceso en segundo plano llamando a clase de la siguiente manera new Thread1().start();

No se si es la forma correcta... pero Funciono :)

Imagen de ezamudio

pues...

No es lo óptimo pero como dices, funciona.

La ventaja de SwingWorker es que te permite sincronizar entre el hilo principal y el hilo trabajador, por lo que puedes hacer cosas como avanzar una barra de progreso, ir poblando un JTable, cosas así.