JavaFX 时钟

JavaFX 时钟

 

今天看到这位博客的博主,把Chris Oliver 写的时钟改了一些代码,变成这个样子,呵呵,有兴趣的朋友可以参考下学习下面的源代码:
 1 import  javafx.ui. * ;
 2 import  javafx.ui.canvas. * ;
 3 import  java.util.Date;
 4
 5 public   class  Timer  {
 6    private attribute elapsed: Number;
 7    public attribute minutes: Number;
 8    public attribute seconds: Number;
 9    public attribute hours: Number;
10    public attribute running: Boolean;
11}

12
13 attribute Timer.elapsed  =  bind
14 if  running then
15 [ 1 .. 60 ] dur  60000  linear
16 while  running
17 continue   if   true
18 else   0 ;
19
20 trigger on Timer.elapsed  =  value  {
21    var now = new Date();
22    minutes = now.getMinutes();
23    seconds = now.getSeconds() +
24    [.35,0.34 .. 0.0] dur 350 +
25    (now.getTime() % 1000)/1000;
26    hours = now.getHours();
27}

28
29 public   class  Clock  extends  CompositeNode  {
30    public attribute ticking: Boolean;
31}

32
33 operation Clock.composeNode()  {
34    var t = Timer {running: bind ticking};
35    return Group {
36        transform: [translate(5,5),scale(1,1)]
37        var secs = bind t.seconds
38        var mins = bind t.minutes + secs/60
39        var hrs = bind t.hours + mins/60
40        content:
41        [
42        Rect {
43            height: 200
44            width: 200
45            fill: white
46        }
,
47        ImageView {
48            transform: []
49            image: Image {url: "http://sellmic.com/lab/dev/jfx/clock/images/clock_face.png"}
50        }
,
51        Group {
52            var hourHand =
53            ImageView {
54                transform: bind rotate(hrs*30,255,245)
55                image: Image {url: "http://sellmic.com/lab/dev/jfx/clock/images/hour_hand.png"}
56            }

57
58            var minuteHand =
59            ImageView {
60                transform: bind rotate(mins *6,255,245)
61                image: Image {url: "http://sellmic.com/lab/dev/jfx/clock/images/minute_hand.png"}
62            }

63            
64            var secondHand =
65            ImageView {
66                transform: bind rotate(t.seconds * 6,255,245)
67                image: Image {url: "http://sellmic.com/lab/dev/jfx/clock/images/second_hand.png"}
68            }

69
70            content: [hourHand, minuteHand, secondHand]
71        }
,
72        ImageView {
73            transform: []
74            image: Image {url: "http://sellmic.com/lab/dev/jfx/clock/images/pin.png"}
75        }
]
76    }
;
77}

78
79 Clock  {ticking: true}  
80
81

你可能感兴趣的:(JavaFX 时钟)