Как увеличить значение в лямбда-выражении? - PullRequest
0 голосов
/ 26 февраля 2019

Я хочу добавить часы в свое приложение.Я получаю unixtime из сети через json, но если я спрашиваю его каждую секунду, через некоторое время он отклоняет ответ.Так что теперь я хочу получить unixtime только один раз, когда я запускаю приложение, затем увеличиваю длинное значение на единицу каждую секунду и отображаю это.

 private void setDateLabel() throws IOException, JSONException {
        long unixtime = Unixtime.getTime();

        Timeline clock = new Timeline(new KeyFrame(Duration.ZERO, e -> {
            try {

                Date date = new Date(unixtime * 1000L);
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                String formatDate = sdf.format(date);
                dateLabel.setText(formatDate);
                unixtime++;
            } catch (Exception ex) {
                Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ex);
            }
        }), new KeyFrame(Duration.seconds(1)));
        clock.setCycleCount(Animation.INDEFINITE);
        clock.play();
}

У меня есть это, но оно не работает.

Unixtime.getTime () не делает ничего, кроме как возвращает длинный номер.

1 Ответ

0 голосов
/ 26 февраля 2019

Я не уверен, что понимаю ваше требование, вы хотите получить время только один раз, а затем обновлять его локально.право?Я бы попытался использовать AtomicLong для этой цели.Что-то вроде ..

Просто примечание: вы можете создать только один экземпляр SimpleDateFormat, а не создавать новый каждую секунду.

private void setDateLabel() throws IOException, JSONException {
        AtomicLong unixtime = new AtomicLong(Unixtime.getTime());
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Timeline clock = new Timeline(new KeyFrame(Duration.ZERO, e -> {
            try {
                Date date = new Date(unixtime.getAndIncrement() * 1000L);
                dateLabel.setText(sdf.format(date));
            } catch (Exception ex) {
                Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ex);
            }
        }), new KeyFrame(Duration.seconds(1)));
        clock.setCycleCount(Animation.INDEFINITE);
        clock.play();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...