Java - Problema:mantener cadena en pantalla un tiempo

 
Vista:

Problema:mantener cadena en pantalla un tiempo

Publicado por Bea (32 intervenciones) el 26/04/2007 22:02:31
Hola, sigo teniendo problemas con los tiempos en java. Vereis, mi situación es la siguiente: yo necesito que me aparezca una palabra en pantalla durante un determinado tiempo, posteriormente desaparezca y al darle a un boton aparezca la siguiente, he metido el Thread.sleep(tiempo) dentro del evento del boton y no me funciona correctamente, solo me consigue sacar la primera palabra. Os pongo los metodos principales por si sabeis como solucionarlo. Gracias

//este metodo es el encargado de mostrar la palabra, esperar y borrarla de pantalla
private void mostrarPalabra() throws InterruptedException
{
etiqueta.setText((String) listado.get(contador));
etiqueta.setHorizontalAlignment((int) JLabel.CENTER_ALIGNMENT);
etiqueta.setVerticalAlignment((int) JLabel.CENTER_ALIGNMENT);
Thread.sleep(tiempo);
borrarPalabra();
contador++;

}
private void borrarPalabra() throws InterruptedException
{
etiqueta.setText("");
etiqueta.setHorizontalAlignment((int) JLabel.CENTER_ALIGNMENT);
etiqueta.setVerticalAlignment((int) JLabel.CENTER_ALIGNMENT);

}


//controla el evento del raton
public void actionPerformed(ActionEvent evento)
{
try
{
if(contador<listado.size())
{
mostrarPalabra();
}
}
catch(Exception e){}

}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema:mantener cadena en pantalla un tiempo

Publicado por Himura (184 intervenciones) el 26/04/2007 22:28:59
Hola,

En vez de usar if necesitas un for.

for(int contador=0; contador<listado.size(); contador++)

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema:mantener cadena en pantalla un tiempo

Publicado por Pablo (39 intervenciones) el 27/04/2007 02:32:43
Coincido en que te falta un for en mostrarPalabra(), pero este sleep va a ejecutarse sobre el thread principal (el que está mostrando la pantalla). Esto significa que el usuario no va a poder interactura con ningún otro componente de la pantalla hasta que ese for termine.

Me parece que lo que deberías hacer es crear una clase Thread con un get que reciba como parámetro a la etiqueta.
Ahora, este Thread se iniciaría en forma conjunta con la pantalla (en el constructor, por ejemplo).
Este Thread comparte con la ventana la etiqueta, y puede realizar el cambio de palabras, pero sin perjudicar al resto de los componentes.

Otra alternativa puede ser usar la clase SwingWorker incorporada en el JDK 1.6

Tengo un ejemplo en mi blog, pero Sitesled me ha borrado la conexión. Volveré a reconectarla pronto

Saludos
Pablo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar