Я хочу сделать циферблат, который будет каждую секунду менять время. - Java

Узнай цену своей работы

Формулировка задачи:

Подскажите, как можно в javafx реализовать бесконечный цикл. Допустим я хочу сделать циферблат, который будет каждую секунду менять время.

Решение задачи: «Я хочу сделать циферблат, который будет каждую секунду менять время.»

textual
Листинг программы
  1. import javafx.animation.*;
  2. import javafx.application.Application;
  3. import javafx.scene.Scene;
  4. import javafx.scene.image.ImageView;
  5. import javafx.scene.layout.AnchorPane;
  6. import javafx.scene.paint.Color;
  7. import javafx.scene.shape.Circle;
  8. import javafx.scene.shape.Line;
  9. import javafx.stage.Stage;
  10. import javafx.util.Duration;
  11.  
  12. public class Ciferblat extends Application {
  13.  
  14.     private double width = 500, height = 500, length = 200;
  15.  
  16.     public static void main(String[] args) {
  17.         launch(args);
  18.     }
  19.  
  20.     @Override
  21.     public void start(Stage primaryStage) {
  22.         ImageView view = new ImageView("http://poko-pic.ru/images/490625_ciferblat-png.jpg");
  23.         view.setPreserveRatio(true);
  24.         view.setFitWidth(width);
  25.  
  26.         Line line = new Line(width / 2, height / 2, width / 2, height / 2 - length);
  27.         Circle circle = new Circle(width / 2, height / 2, 10, Color.WHITE);
  28.         circle.setStroke(Color.RED);
  29.         line.setStroke(Color.RED);
  30.  
  31.         Timeline timeline = new Timeline(new KeyFrame(Duration.seconds(60),
  32.                 new KeyValue(line.endXProperty(), line.getStartX() + length, new MyInterpolator(true)),
  33.                 new KeyValue(line.endYProperty(), line.getStartY(), new MyInterpolator(false)))
  34.         );
  35.         timeline.setCycleCount(Animation.INDEFINITE);
  36.         timeline.play();
  37.  
  38.         primaryStage.setScene(new Scene(new AnchorPane(view, line, circle), 500, 500));
  39.         primaryStage.show();
  40.     }
  41.  
  42.     class MyInterpolator extends Interpolator {
  43.         private boolean isX;
  44.  
  45.         MyInterpolator(boolean isX) {
  46.             this.isX = isX;
  47.         }
  48.  
  49.         @Override
  50.         protected double curve(double t) {
  51.             return isX ? Math.cos(Math.toRadians(90 - 360 * t)) : 1 - Math.sin(Math.toRadians(90 - 360 * t));
  52.         }
  53.     }
  54. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы