javaFX 在窗口的标题栏显示当前时间,1秒更新一次时间

 例1:在窗口的标题栏显示当前时间,1秒更新一次时间

 1 import java.text.DateFormat;
 2 import java.text.SimpleDateFormat;
 3 import java.util.Date;
 4 
 5 import javafx.animation.KeyFrame;
 6 import javafx.animation.Timeline;
 7 import javafx.application.Application;
 8 import javafx.event.ActionEvent;
 9 import javafx.event.EventHandler;
10 import javafx.geometry.Insets;
11 import javafx.scene.Scene;
12 import javafx.scene.layout.GridPane;
13 import javafx.stage.Stage;
14 import javafx.util.Duration;
15 
16 public class Main extends Application {
17 
18     public static void main(String[] args) {
19         launch(args);
20     }
21     
22     @Override
23     public void start(Stage primaryStage) throws Exception {
24         // Create a pane to hold two players
25         GridPane pane = new GridPane();
26         pane.setStyle("-fx-border-color: green;");
27         pane.setPadding(new Insets(10, 10, 10, 10));
28         pane.setHgap(10);
29         pane.setVgap(10);
30         
31         // Date format
32         DateFormat df = new SimpleDateFormat("yyyy.MM.dd hh:mm:ss");
33         
34         EventHandler<ActionEvent> eventHandler = e -> {
35             primaryStage.setTitle(df.format(new Date()));
36             System.out.println(df.format(new Date()));
37         };
38         
39         Timeline animation = new Timeline(new KeyFrame(Duration.millis(1000), eventHandler));
40         animation.setCycleCount(Timeline.INDEFINITE);
41         animation.play();
42         
43         // Create a scene
44         Scene scene = new Scene(pane, 400, 200);
45         primaryStage.setScene(scene);
46         primaryStage.setTitle("Starting");
47         primaryStage.setResizable(false);
48         primaryStage.show();
49     }
50 }

运行效果:

关于lambda表达式:https://www.cnblogs.com/franson-2016/p/5593080.html

例1中的第34~37行的代码是lambda表达式的写法(感觉lambda表达式好难理解)。在这里,其实就是将一个匿名内部类的引用赋给一个变量。

EventHandler<ActionEvent> eventHandler = e -> {
    primaryStage.setTitle(df.format(new Date()));
    System.out.println(df.format(new Date()));
};

以上代码等同于:

EventHandler<ActionEvent> eventHandler = new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent event) {
        primaryStage.setTitle(df.format(new Date()));
        System.out.println(df.format(new Date()));
    }
};

例1中的第34~39行的代码可以改写成:

Timeline animation = new Timeline(new KeyFrame(Duration.millis(1000), new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent event) {
        primaryStage.setTitle(df.format(new Date()));
        System.out.println(df.format(new Date()));
    }
}));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值