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

Ejemplo simple en java, como es lo correcto?

Estas en el tema de Ejemplo simple en java, como es lo correcto? en el foro de Java en Foros del Web. hola.. bueno mi duda es como seria lo correcto ejecutar esto codigo... public void actionPerformend(ActionEvent e){ Label1.setText("Mensaje 1"); Thread.sleep(2000);// o un for que vaya hasta ...
  #1 (permalink)  
Antiguo 13/05/2009, 15:11
 
Fecha de Ingreso: febrero-2007
Mensajes: 39
Antigüedad: 17 años, 2 meses
Puntos: 0
Ejemplo simple en java, como es lo correcto?

hola..

bueno mi duda es como seria lo correcto ejecutar esto codigo...


public void actionPerformend(ActionEvent e){

Label1.setText("Mensaje 1");
Thread.sleep(2000);// o un for que vaya hasta 200000 o algo asi
Label2.setText("Mensaje 2");
// aqui en adelante existen mas tareas cuando se eejcuta el action

}

lo que pasa es que quiero mostrar primeramente el mensaje 1(al precionar un boton), luego de un retardo de 2 segundo muestre el mensaje 2, pero pasa que directamente muestra el mensaje 2... Existe alguna otra forma de actualizar el formulario antes de ese retardo? pero dentro del mismo metodo action ? sin utilizar un thread?
Como seria la forma correcta?

Gracias ....
  #2 (permalink)  
Antiguo 13/05/2009, 16:21
(Desactivado)
 
Fecha de Ingreso: abril-2009
Mensajes: 113
Antigüedad: 15 años
Puntos: 1
Respuesta: Ejemplo simple en java, como es lo correcto?

A ver.. yo no soy el mas indicado... de threads nada de nada.
hay un metodo setVisible(boolean bol)
Otra cosa
lo mismo solo necesitas un label y le cambias el texto.

No sé el resto del codigo, ni lo que pretendes...


P.D. Presionar.
  #3 (permalink)  
Antiguo 13/05/2009, 21:41
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Ejemplo simple en java, como es lo correcto?

Hola:

La unica forma es el Thread que además es lo correcto.

Java ejecuta el actionPerformed en el mismo thread que se encarga de repintar las ventanas. Por ello, mientras tú haces cosas en el actionPerformed, java no repinta nada en las ventanas. Y por ello, el primer setText() queda "encolado" a la espera de que el código de actionPerformed termine y después del sleep(), el segundo setText() queda también "encolado". Al terminar el actionPerformed, los dos setText() encolados, se ejecutan seguidos, uno detrás de otro y sin pausa entre ellos, por lo que no te da tiempo a ver el primero.

Si nada más entrar en el actionPerformed lanzas un Thread y devuelves el control, el hilo de java de repintar ventanas queda libre. Cuando en el hilo separado hagas el primer setText(), se encola igual que en el primer caso, pero al estar el hilo de repintando libre, se ejecuta inmediatamente y lo ves en pantalla mientras tu hilo está con el sleep().

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #4 (permalink)  
Antiguo 14/05/2009, 00:45
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Ejemplo simple en java, como es lo correcto?

Lo que dice Chuidiang es correcto...

Edit: Lo que yo quería explicar no ha quedado muy claro por que es un tema complejo, así que lo mejor es que para más información: http://java.sun.com/docs/books/tutor...g/concurrency/

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.

Última edición por GreenEyed; 14/05/2009 a las 00:59
  #5 (permalink)  
Antiguo 14/05/2009, 19:10
 
Fecha de Ingreso: febrero-2007
Mensajes: 39
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Ejemplo simple en java, como es lo correcto?

agradecerles por sus respuestas. Probaré las sugerencias y les comento si logre o no la tarea.


si alguien puede darme algunos ejemplos les agradecere....
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 01:13.