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

Actualizar JLabel con Timer

Estas en el tema de Actualizar JLabel con Timer en el foro de Java en Foros del Web. Hola gente! si bien, tengo pocos segundos registrado en el foro, siempre busco info aca en busca de ayuda (desde afuera de la comunidad) y ...
  #1 (permalink)  
Antiguo 29/08/2011, 22:09
Avatar de KenUston  
Fecha de Ingreso: agosto-2011
Mensajes: 6
Antigüedad: 12 años, 7 meses
Puntos: 0
Actualizar JLabel con Timer

Hola gente! si bien, tengo pocos segundos registrado en el foro, siempre busco info aca en busca de ayuda (desde afuera de la comunidad) y ahora me veo obligado a pedirles ayuda porque no he podido encontrarla por ningun lado.
Mi experiencia con Java no es mucha, pero voy a ayudar a todos los que pueda, asi que MUUY AGRADECIDO con lo que lo hagan conmigo.

El tema es asi, tengo un JToolBar y dentro de él hay varias cosas, una de ellas es un jlabel que quiero actualizarla con un timer para que me muestre fecha + hora (de la compu) con la actualizacion de los segundos, el timer anda joya pero no para actualizar el setText de la label, proque lo probe con un system.out....

Aca el codigo:

private JToolBar getBarraAbajo() {
if (BarraAbajo == null) {
LblEboHora = new JLabel();



Timer timer = new Timer (1000, new ActionListener ()
{

public void actionPerformed(ActionEvent e)
{
LblEboHora.setText(GestorTime.getFfechaSystem());

}
});
timer.start();

GestorTime.getFfechaSystem():
Esto tb anda bien porque esta probado en otro lado y anda, de hecho cuando ejecuto la clase levanta todo bien, pero el reloj se queda en la hora/minutos/segundos que toma el gestor a la hora de levantar la clase, no corre el segundero y tampoco el minutero ni naadaaaaa y me estoy volviendo loco pero no lo puedo hacer andar!!!


Si alguien tiene otro metodo o me puede decir en que le estoy herrando infiitas graciass heramnos!!!!!
  #2 (permalink)  
Antiguo 29/08/2011, 22:35
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Actualizar JLabel con Timer

Declara la variable LblEboHora como final :)

Supongo que es porque al hacer la llamada dentro de una clase anónima, esta no tiene forma de referenciar a las instancias de la clase de fuera.
  #3 (permalink)  
Antiguo 30/08/2011, 02:06
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Actualizar JLabel con Timer

Habría que ver también cómo y cuando se está llamando al trozo de código del new JLabel. Si lo llamas muchas veces, estás creando muchos JLabel y posiblemente sólo el primero esté visible en la pantalla, mientras que las actualizaciones se hagan en los demás.

Poniéndolo final como te indican, te saltará el error si se está llamando muchas veces al new JLabel.

Aquí tienes un ejemplos con lo que quieres hacer http://www.chuidiang.com/java/timer/timer.php

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #4 (permalink)  
Antiguo 30/08/2011, 20:08
Avatar de KenUston  
Fecha de Ingreso: agosto-2011
Mensajes: 6
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Actualizar JLabel con Timer

Muuuuuchas gracias a ambos por las respuestas.
Ya encontre el error pero no la solucion. El gestor anda bien, pero no actualiza tooodo el tiempo la fecha/hora, si no que toma un unico valor cuando levanta la clase o es invodo el get.
El gestor tiene este codigo:

import java.text.SimpleDateFormat;
import java.util.Date;

public class GestorTime {

static Date FechaSystem = new Date();
static SimpleDateFormat fechaformato = new SimpleDateFormat("EEEEEEEEE dd/MM/yyyy HH:mm:ss");
public static String FfechaSystem = fechaformato.format(FechaSystem);

public static void setFfechaSystem(String ffechaSystem) {
FfechaSystem = ffechaSystem;
}

public static String getFfechaSystem() {
return FfechaSystem; }

}

Ya probe con un timer en el gestor para que este todo el tiempo seteando la hora, pero no va, tira errores por todos lados.
Busque si habia algun metodo para que el seteo de la hora se pueda hacer cada x cantidad de tiempo, pero no encontre naranja.

Me base en esto para hacer el mio (lo habia visto hace unos dias a este linko), pero ahora veo que el problema esta en otro lado.
http://www.chuidiang.com/java/timer/timer.php

Alguna sugerencia?

Que put* es Java cuando se le antoja!!!! , pero otras es tan bueeeno jeje.

Gracias desde ya!!!!
  #5 (permalink)  
Antiguo 30/08/2011, 23:02
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Actualizar JLabel con Timer

Ayudaría saber que errores tira y el código que los tira.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #6 (permalink)  
Antiguo 31/08/2011, 15:01
Avatar de KenUston  
Fecha de Ingreso: agosto-2011
Mensajes: 6
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Actualizar JLabel con Timer

Bueno chuidiang, no estoy en mi maquina ahora, pero ni bien llegue lo posteo.
Te referis al error del timer en la clase GestorTime? Los errores se dan ahí cuando quiero ponerle un timer, directamente ni compila.
  #7 (permalink)  
Antiguo 31/08/2011, 22:07
Avatar de KenUston  
Fecha de Ingreso: agosto-2011
Mensajes: 6
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Actualizar JLabel con Timer

Ya lo resolvi, no de la manera mas elegante pero si de la de un principante en Java jeje.
Mañana les paso como lo hice para ayudar a otros que necesiten algo parecido, ahora debo ir a esleepear.

Gracias gente por responderme e intentar ayudarme!!!
  #8 (permalink)  
Antiguo 01/09/2011, 16:45
Avatar de KenUston  
Fecha de Ingreso: agosto-2011
Mensajes: 6
Antigüedad: 12 años, 7 meses
Puntos: 0
De acuerdo Respuesta: Actualizar JLabel con Timer

Para el que le pueda servir, lo hice de la siguiente forma:

Un gestor (GestorTime) con el siguiente codigo:

public class GestorTime {

static Date FechaSystem = new Date();
static SimpleDateFormat fechaformato = new SimpleDateFormat("EEEEEEEEE dd/MM/yyyy HH:mm:ss");
public static String FfechaSystem = fechaformato.format(FechaSystem);

public static void setFfechaSystem(String ffechaSystem) {
FfechaSystem = ffechaSystem
}

public static String getFfechaSystem() {
return FfechaSystem;
}
}

Por otro lado, donde tengo la JToolBar y la lbl puse esto:

Timer timer = new Timer (1000, new ActionListener ()
{

public void actionPerformed(ActionEvent e)
{
Date HorNew = new Date();
SimpleDateFormat fechaforma = new SimpleDateFormat("EEEEEEEEE dd/MM/yyyy HH:mm:ss");
String FfechaSystemA = fechaforma.format(HorNew);


GestorTime.setFfechaSystem(FfechaSystemA);
LblEboHora.setText(GestorTime.getFfechaSystem());

}

});
timer.start();

Lo que hace esto es sencillo, cada 1 segundo:
1 - Crea una nueva instancia de Date con todo ese formato
2 - Se la setea a la variable del GestorTime
3 - Se refresca el setText de la lbl, mediante el metodo get del GestorTime.

Simple y sencillo, pero le di dos millones de vueltas, ya tendré mas experiencia jeje.

Chauuu.

Etiquetas: jlabel, time
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 17:13.