How to draw a clock with JavaFX 2?

java, javafx-2

Solution

- Add 3 lines (for hour, minute, second) with different strokes and lengths to your Group.

- Place one end of each line in the center of your circle and the other end of each line pointing straight up at 12 o'clock.

- Create a timeline which triggers a keyframe each second.

- In the keyframe:

- Calculate the degree of rotation for the hands based on the current time.

- Rotate the hands the required amount.

- Set the timeline to cycle indefinitely.

- Place your Group in a Scene and add the Scene to a Stage.

- Play your timeline.

I created a sample app implementing the above principles.

Update

In response to criticism of the coding style used in the sample app, I created a refactored sample app which uses a more functional coding style.

Additionally the jfxtras project has an AnalogueClock control. Here is the gist of how to use the jfxtras clock.

Problem

Given an hour and a minute, I want to draw an analogous clock. I was able to create a `Group` with a `Circle`, but I don't know which class to use for the hands and how to place and rotate them.

Original source