Andrea, miembro de nuestro staff, nos ha hecho el favor de crear este artículo ya que conoce perfectamente dicho tema.
Solución:
Creo que necesitas FX UI Thread Platform.runLater(...)
para eso, pero puedes hacer algo como esto usando Timeline
en tu clase de controlador,
@FXML
public void initialize()
Timeline clock = new Timeline(new KeyFrame(Duration.ZERO, e ->
LocalTime currentTime = LocalTime.now();
time.setText(currentTime.getHour() + ":" + currentTime.getMinute() + ":" + currentTime.getSecond());
),
new KeyFrame(Duration.seconds(1))
);
clock.setCycleCount(Animation.INDEFINITE);
clock.play();
La respuesta de @Shekhar Rai funciona bien, pero aquí hay una versión más corta que también funciona bastante bien.
@FXML
Label dateTime;
@Override
public void initialize(URL location, ResourceBundle resources)
initClock();
private void initClock()
Timeline clock = new Timeline(new KeyFrame(Duration.ZERO, e ->
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
dateTime.setText(LocalDateTime.now().format(formatter));
), new KeyFrame(Duration.seconds(1)));
clock.setCycleCount(Animation.INDEFINITE);
clock.play();
La principal ventaja es que no tienes que definir todas las variables (segundos, minutos, …)
Eres capaz de añadir valor a nuestro contenido informacional colaborando tu experiencia en las ilustraciones.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)