Я хочу сделать циферблат, который будет каждую секунду менять время. - Java
Формулировка задачи:
Подскажите, как можно в javafx реализовать бесконечный цикл. Допустим я хочу сделать циферблат, который будет каждую секунду менять время.
Решение задачи: «Я хочу сделать циферблат, который будет каждую секунду менять время.»
textual
Листинг программы
import javafx.animation.*; import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.image.ImageView; import javafx.scene.layout.AnchorPane; import javafx.scene.paint.Color; import javafx.scene.shape.Circle; import javafx.scene.shape.Line; import javafx.stage.Stage; import javafx.util.Duration; public class Ciferblat extends Application { private double width = 500, height = 500, length = 200; public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) { ImageView view = new ImageView("http://poko-pic.ru/images/490625_ciferblat-png.jpg"); view.setPreserveRatio(true); view.setFitWidth(width); Line line = new Line(width / 2, height / 2, width / 2, height / 2 - length); Circle circle = new Circle(width / 2, height / 2, 10, Color.WHITE); circle.setStroke(Color.RED); line.setStroke(Color.RED); Timeline timeline = new Timeline(new KeyFrame(Duration.seconds(60), new KeyValue(line.endXProperty(), line.getStartX() + length, new MyInterpolator(true)), new KeyValue(line.endYProperty(), line.getStartY(), new MyInterpolator(false))) ); timeline.setCycleCount(Animation.INDEFINITE); timeline.play(); primaryStage.setScene(new Scene(new AnchorPane(view, line, circle), 500, 500)); primaryStage.show(); } class MyInterpolator extends Interpolator { private boolean isX; MyInterpolator(boolean isX) { this.isX = isX; } @Override protected double curve(double t) { return isX ? Math.cos(Math.toRadians(90 - 360 * t)) : 1 - Math.sin(Math.toRadians(90 - 360 * t)); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д