倒计时java小程序_java程序: 倒计时的小程序 (GridPane, Timer, Calendar, SimpleDateFormat ...)...

1 packagecountDownTimer;2

3 importjava.text.ParseException;4 importjava.text.SimpleDateFormat;5 importjava.util.Calendar;6 importjava.util.Date;7 importjava.util.Timer;8 importjava.util.TimerTask;9

10 importjavafx.application.Application;11 importjavafx.event.ActionEvent;12 importjavafx.event.EventHandler;13 importjavafx.geometry.HPos;14 importjavafx.geometry.Insets;15 importjavafx.geometry.Pos;16 importjavafx.scene.Scene;17 importjavafx.scene.control.Button;18 importjavafx.scene.control.TextField;19 importjavafx.scene.layout.GridPane;20 importjavafx.scene.layout.Priority;21 importjavafx.scene.text.Font;22 importjavafx.scene.text.FontWeight;23 importjavafx.scene.text.Text;24 importjavafx.stage.Stage;25 importjavafx.stage.WindowEvent;26

27 public class App extendsApplication {28

29 Timer timer = newTimer();30 Button btnStart = new Button("Start");31 Button btnPause = new Button("Pause");32 Button btnSet = new Button("Set");33 Text textTimeleft = new Text("HH:MM:SS");34 TextField textSet = new TextField("HH:MM");35 Calendar timenow =Calendar.getInstance();36 Calendar timeZero =Calendar.getInstance();37 boolean bPause = false;38

39 TimerTask timerTask = newTimerTask() {40

41 @Override42 public voidrun() {43

44 if(bPause) {45 if(timenow.compareTo(timeZero)>0) {46 timenow.set(Calendar.SECOND, timenow.get(Calendar.SECOND)-1);47 if ((timenow.getTimeInMillis() - timeZero.getTimeInMillis()) <= 10000) {48 flashText();49 }50 }else{51 bPause = false;52 }53 //display

54 SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");55 String dateString =formatter.format(timenow.getTime());56 textTimeleft.setText(dateString);57 }58 }59 };60

61 boolean bToggle = false;62 private voidflashText() {63

64 bToggle = !bToggle;65 if(bToggle) {66 textTimeleft.setFont(Font.font("Tahoma", FontWeight.BOLD, 64));67 }else{68 textTimeleft.setFont(Font.font("Tahoma", FontWeight.NORMAL, 64));69 }70 }71 public static voidmain(String[] args) {72 launch(args);73 }74

75 @Override76 public void start(Stage primaryStage) throwsException {77

78 timer.scheduleAtFixedRate(timerTask, 0, 1000);79 try{80 SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");81 Date dateZero = sdf.parse("00:00");82 Date dataSet = sdf.parse("00:10");83 timenow.setTime(dataSet);84 timeZero.setTime(dateZero);85 textTimeleft.setText("00:10:00");86 } catch(ParseException e) {87 }88

89 btnStart.setOnAction(new EventHandler() {90 @Override91 public voidhandle(ActionEvent event) {92 bPause = true;93 }94 });95

96 btnPause.setOnAction(new EventHandler() {97 @Override98 public voidhandle(ActionEvent event) {99 bPause = false;100 }101 });102

103 btnSet.setOnAction(new EventHandler() {104 @Override105 public voidhandle(ActionEvent event) {106 SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");107 try{108 timenow.setTime(sdf.parse(textSet.getText()));109 sdf = new SimpleDateFormat("HH:mm:ss");110 String dateString =sdf.format(timenow.getTime());111 textTimeleft.setText(dateString);112 } catch(ParseException e) {113 }114 }115 });116

117

118 GridPane grid = newGridPane();119 grid.setAlignment(Pos.CENTER);120 grid.setPadding(new Insets(25, 25, 25, 25));121

122 grid.add(btnStart, 0, 0);123 grid.add(btnPause, 2, 0);124 grid.add(btnSet, 2, 2);125 textTimeleft.setFont(Font.font("Tahoma", FontWeight.NORMAL, 64));126 grid.add(textTimeleft, 0, 1, 2, 1);127 GridPane.setHalignment(textTimeleft, HPos.CENTER);128 GridPane.setColumnSpan(textTimeleft, GridPane.REMAINING);129 GridPane.setHgrow(textTimeleft, Priority.ALWAYS);130 grid.add(textSet, 0, 2);131

132 Scene scene = newScene(grid);133 primaryStage.setScene(scene);134

135 primaryStage.setTitle("倒计时");136 primaryStage.show();137 primaryStage.setOnCloseRequest(new EventHandler() {138 @Override139 public voidhandle(WindowEvent event) {140 timer.cancel();141 }142 });143 }144 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值