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

Como refrescar un frame

Estas en el tema de Como refrescar un frame en el foro de Java en Foros del Web. Hola, estoy haciendo un reloj mundial en un frame en java. He adaptado el siguiente codigo para poder ejecutarlo en un frame: import java.applet.*; import ...
  #1 (permalink)  
Antiguo 26/05/2009, 04:08
 
Fecha de Ingreso: mayo-2009
Mensajes: 1
Antigüedad: 15 años
Puntos: 0
Como refrescar un frame

Hola, estoy haciendo un reloj mundial en un frame en java. He adaptado el siguiente codigo para poder ejecutarlo en un frame:

import java.applet.*;
import java.awt.*;
import java.util.*;
import java.text.DateFormat;

public class MiApplet extends Applet implements Runnable
{
private Thread hilo = null;
private Font fuente;
private String horaActual = "00:00:00";

public void init()
{
fuente = new Font("Verdana", Font.BOLD, 24);
}
public void start()
{
if (hilo == null)
{
hilo = new Thread(this, "Reloj");
hilo.start();
}
}
public void run()
{
Thread hiloActual = Thread.currentThread();
while (hilo == hiloActual)
{
//obtener la hora actual
Calendar cal = Calendar.getInstance();
Date hora = cal.getTime();
DateFormat df = DateFormat.getTimeInstance();
horaActual = df.format(hora);
repaint();
try
{
Thread.sleep(1000);
}
catch (InterruptedException e){}
}
}
public void paint(Graphics g)
{
//Dibujar un rectangulo alrededor del contenedor
g.draw3DRect(1, 1, getSize().width-3, getSize().height-3, false);
//Establecer la Fuente
g.setFont(fuente);
//mostrar la Hora
g.drawString(horaActual,14,40);
}
public void stop()
{
hilo = null;
}
}


El problema es que no se refresca se queda siempre parado (12:04:03).

Saludos.

Última edición por juanan2010; 26/05/2009 a las 04:13 Razón: Error en el titulo
  #2 (permalink)  
Antiguo 26/05/2009, 15:28
 
Fecha de Ingreso: abril-2009
Mensajes: 82
Antigüedad: 15 años
Puntos: 2
Respuesta: Como refrescar un frame

Buenas:

Sinceramente, creo que si quieres hacer un reloj en un Frame, lo que yo haría seria poner un JLabel con un metodo en el que cambies el texto de dicho JLabel. Y por otro lado, crear una clase que extienda de Thread y que cada segundo utilice la función que le proporciona el Frame y así refresca los datos.

Hay maneras mas fáciles que lo que estás intentando.

Saludos, Antonio.

PD: Cuando yo hice un cronometro, yo refrescaba cada 200 ms, ya que cuando lo haces cada segundo verás que salta alguno debido al retraso de procesamiento de datos.
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 16:35.