2017-01-11 2 views
-2

Я создал приложение javafx, которое включает функцию отслеживания времени, которая отслеживает время, в течение которого приложение было открыто (выполнено) для. Я знаю о System.currentTimeMillis(), но мне было интересно, можно ли создать кнопку (которая не функционирует как кнопка - мне просто нужно использовать кнопку JFX, которая выглядит хорошо), которая показывает (печатает) количество времени, проведенного в приложение. Что-то вроде счетчика в реальном времени, где время увеличивается само по себе.Отслеживание прошедшего времени с помощью счетчика реального времени

Что-то похожее на это: https://www.youtube.com/watch?v=f8LOflGG8g8

За исключением, однако, вместо того, чтобы использовать анимацию, используя текст вместо.

ответ

0
  • Создать класс Thread
  • запустить его всякий раз, когда вы хотите, и передать текущее время в качестве аргумента указанного класса (System.currentTimeMillis())
  • Внутри нити, есть цикл, и Thread.sleep(1000); на конец. Каждый раз, когда цикл проходит, вычитайте время, которое вы пропустили на шаге 2, с текущего времени следующим образом: System.currentTimeMillis() - startTime
  • Используйте правильные методы обновления асинхронного GUI для обновления нужной кнопки. Вы можете разделить свое расчетное время на 1000, чтобы получить секунды, еще 60, чтобы получить минуты, и еще 60, чтобы получить часы.
1

Просто используйте AnimationTimer обновить текст:

public class MyApp extends Application { 

    @Override 
    public void start(Stage primaryStage) { 
     long startTime = System.currentTimeMillis(); 
     Label timerLabel = new Label(); 

     new AnimationTimer() { 
      @Override 
      public void handle(long now) { 
       long elapsedMillis = System.currentTimeMillis() - startTime ; 
       timerLabel.setText(Long.toString(elapsedMillis/1000)); 
      } 
     }.start(); 

     // lay out UI etc etc 

    } 
} 
Смежные вопросы