How to draw a clock with JavaFX 2?

2019-01-11 21:29发布

问题:

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.

回答1:

  1. Add 3 lines (for hour, minute, second) with different strokes and lengths to your Group.
  2. 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.
  3. Create a timeline which triggers a keyframe each second.
  4. In the keyframe:
    • Calculate the degree of rotation for the hands based on the current time.
    • Rotate the hands the required amount.
  5. Set the timeline to cycle indefinitely.
  6. Place your Group in a Scene and add the Scene to a Stage.
  7. 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.



回答2:

Netbeans 7.1.2 is bundled with sample applications. In JavaFX part there is a StopWatch sample application. Have a look at it, it can give you a great clue.



标签: java javafx-2