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

涉及到的东西:
javafx简单的界面,布局,按钮,文本框,事件响应
java.util.Timer,用于定时
SimpleDateFormat用于在String和Date之间转换。
java.util.Calendar,表示时间,用于定时计算。
贴代码
package countDownTimer; import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask; import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.HPos;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Priority;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import javafx.stage.WindowEvent; public class App extends Application { Timer timer = new Timer();
Button btnStart = new Button("Start");
Button btnPause = new Button("Pause");
Button btnSet = new Button("Set");
Text textTimeleft = new Text("HH:MM:SS");
TextField textSet = new TextField("HH:MM");
Calendar timenow = Calendar.getInstance();
Calendar timeZero = Calendar.getInstance();
boolean bPause = false; TimerTask timerTask = new TimerTask() { @Override
public void run() { if (bPause) {
if(timenow.compareTo(timeZero)>0) {
timenow.set(Calendar.SECOND, timenow.get(Calendar.SECOND)-1);
if ((timenow.getTimeInMillis() - timeZero.getTimeInMillis()) <= 10000) {
flashText();
}
}else {
bPause = false;
}
//display
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
String dateString = formatter.format(timenow.getTime());
textTimeleft.setText(dateString);
}
}
}; boolean bToggle = false;
private void flashText() { bToggle = !bToggle;
if(bToggle) {
textTimeleft.setFont(Font.font("Tahoma", FontWeight.BOLD, 64));
}else {
textTimeleft.setFont(Font.font("Tahoma", FontWeight.NORMAL, 64));
}
}
public static void main(String[] args) {
launch(args);
} @Override
public void start(Stage primaryStage) throws Exception { timer.scheduleAtFixedRate(timerTask, 0, 1000);
try {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
Date dateZero = sdf.parse("00:00");
Date dataSet = sdf.parse("00:10");
timenow.setTime(dataSet);
timeZero.setTime(dateZero);
textTimeleft.setText("00:10:00");
} catch (ParseException e) {
} btnStart.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
bPause = true;
}
}); btnPause.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
bPause = false;
}
}); btnSet.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
try {
timenow.setTime(sdf.parse(textSet.getText()));
sdf = new SimpleDateFormat("HH:mm:ss");
String dateString = sdf.format(timenow.getTime());
textTimeleft.setText(dateString);
} catch (ParseException e) {
}
}
}); GridPane grid = new GridPane();
grid.setAlignment(Pos.CENTER);
grid.setPadding(new Insets(25, 25, 25, 25)); grid.add(btnStart, 0, 0);
grid.add(btnPause, 2, 0);
grid.add(btnSet, 2, 2);
textTimeleft.setFont(Font.font("Tahoma", FontWeight.NORMAL, 64));
grid.add(textTimeleft, 0, 1, 2, 1);
GridPane.setHalignment(textTimeleft, HPos.CENTER);
GridPane.setColumnSpan(textTimeleft, GridPane.REMAINING);
GridPane.setHgrow(textTimeleft, Priority.ALWAYS);
grid.add(textSet, 0, 2); Scene scene = new Scene(grid);
primaryStage.setScene(scene); primaryStage.setTitle("倒计时");
primaryStage.show();
primaryStage.setOnCloseRequest(new EventHandler<WindowEvent>() {
@Override
public void handle(WindowEvent event) {
timer.cancel();
}
});
}
}
java程序: 倒计时的小程序 (GridPane, Timer, Calendar, SimpleDateFormat ...)的更多相关文章
- 「小程序JAVA实战」微信小程序简介(一)
转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-01/ 一直想学习小程序,苦于比较忙,加班比较多没时间,其实这都是理由,很多时候习惯了搬砖,习惯了固 ...
- Java之——实现微信小程序加密数据解密算法
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/79450115 一.概述 微信推出了小程序,很多公司的客户端应用不仅具有了APP.H ...
- java全栈商业小程序开发
此次开发只为学习和巩固,第一次学习开发 一.开发前需要了解: 开发框架MVVM.痛点.开源工具.VUE前端框架.微信支付模块.uni-app前端框架.小程序申请.开发工具下载.编写测试小程序.小程序结 ...
- 「小程序JAVA实战」微信小程序的简要注册流程(二)
转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-02/ 了解了小程序的历史和它未来的前景,我们开始注册小程序 注册小程序 可以参考官网介绍:http ...
- 微信小程序代码大全 - 小程序开发福利
小程序QQ交流群:131894955 小程序开发文档(Wepy) 小程序商城源码下载(weixin-app-shop) 小程序官网源码下载(weixin-app-cms) 微信管家平台JAVA版开源下 ...
- 微信小程序< 3 > ~ 微信小程序开源项目合集
简介 移动开发者想学习微信小程序需要学习一点HTML ,CSS和JS才能够比较快速的上手,参考自己学习Android学习过程,阅读源码是一个很好的方式,所以才收集了一些WeApp的开源项目. awes ...
- [小程序开发] 微信小程序内嵌网页web-view开发教程
为了便于开发者灵活配置小程序,微信小程序开放了内嵌网页能力.这意味着小程序的内容不再局限于pages和large,我们可以借助内嵌网页丰富小程序的内容.下面附上详细的开发教程(含视频操作以及注意事项) ...
- 详解封装微信小程序组件及小程序坑(附带解决方案)
一.序 上一篇介绍了如何从零开发微信小程序,博客园审核变智障了,每次代码都不算篇幅,好好滴一篇原创,不到3分钟从首页移出来了.这篇介绍一下组件封装和我的踩坑历程. 二.封装微信小程序可复用组件 首先模 ...
- 承接小程序外包 微信小程序外包 H5外包 就找北京动点软件
承接小程序外包 微信小程序外包 H5外包 就找北京动点软件 长年承接微信小程序.微信公众号开发 全职的H5开发团队,开发过几十款微信小程序公众号案例 欢迎来电咨询 QQ:372900288 微信:li ...
随机推荐
- 中国版Azure 文件服务
中国版Azure 文件服务预览版在2015年1月13日已经上线,文件存储使用标准SMB 2.1协议为应用程序提供共享存储. 当我们的虚拟机连接到文件共享后就可以像使用本地共享文件夹一样来读取和写入文件 ...
- Jenkins持续集成企业实战系列之Jenkins持续集成简介及安装-----02
1. Jenkins持续集成简介 注:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任. 最初接触Jenkins也是由于公司需求, ...
- mvc 请求处理管道
原文 http://blog.csdn.net/wulex/article/details/41514795 当一个asp.net mvc应用程序提出请求,为了响应请求,包含一些请求执行流程步骤! 在 ...
- poll?transport=longpoll&connection...烦人的请求
2016-06-19 11:50 76人阅读 评论(0) 收藏 举报 分类: C#那点事 版权声明:本文为博主原创文章,未经博主允许不得转载. 1.问题描述: 最近使用miniui做了一个后台管理系 ...
- Android 滚动视图(ScollView)
1.介绍 2.使用技巧 3.xml文件代码 <?xml version="1.0" encoding="utf-8"?> <LinearLay ...
- java.math.BigDecimal cannot be cast to java.lang.String
从数据库总查询出的count(*) 函数统计的值,类型转换方法: Map<String,Integer> map = new HashMap<String,Integer>() ...
- Largest Submatrix of All 1’s(思维+单调栈)
Given a m-by-n (0,1)-matrix, of all its submatrices of all 1's which is the largest? By largest we m ...
- if __name__ == '__main__' 详解
1.__name__是啥 __name__ 是Python的模块名字. 手册解释:The name of the module. 2.__name__的值 首先,一个变量一次只有一个值. 其次,__n ...
- openstack、kvm、qemu-kvm、libvirt、xen的关系
虚拟化技术—基础(1) 本文围绕下面3个问题进行对虚拟化技术展开讨论: 1.虚拟化技术实现方式有哪些?虚拟化技术分哪些? 2.请分别通过kvm.xen工具来实现虚拟化系统的部署? 3.请描述opens ...
- 今日工作总结:jquery轮转效果的集成与前台页面banner的设计思路总结
今日做了两个项目中的两个问题,现在特来总结一下,以便分享给更多的朋友们. 1.jquery轮转效果的集成 涉及到jquery的不同版本问题,解决办法是在后缀用jQuery代替$.项目地址在:121.4 ...