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 ...
随机推荐
- The server of Apache (三)——网页优化
在企业中,部署apache后只采用默认的配置参数,会有很多问题,因为那些配置都是针对以前服务器配置的. 一.网页压缩 1.介绍 配置apache的网页压缩功能,是使用Gzip压缩算法来对apache服 ...
- Python之路番外:PYTHON基本数据类型和小知识点
Python之路番外:PYTHON基本数据类型和小知识点 一.基础小知识点 1.如果一行代码过长,可以用续行符 \换行书写 例子 if (signal == "red") and ...
- 降维之主成分分析法(PCA)
一.主成分分析法的思想 我们在研究某些问题时,需要处理带有很多变量的数据,比如研究房价的影响因素,需要考虑的变量有物价水平.土地价格.利率.就业率.城市化率等.变量和数据很多,但是可能存在噪音和冗余, ...
- C#中调用SAPI实现语音识别的2种方法
通过微软的SAPI,不仅仅可以实现语音合成TTS,同样可以实现语音识别SR.下面我们就介绍并贴出相关代码.主要有两种方式: 1.使用COM组件技术,不管是C++,C#,Delphi都能玩的转,开发出来 ...
- swarm1
type 必选项,1表示container,2表示swarm stack,3表示compose stack title 必选项 description 必选项 image 必选项,该应用使用的dock ...
- 苹果内购和 Apple Pay
作者:CC老师_MissCC链接:http://www.jianshu.com/p/e3bc47e81785來源:简书 苹果内购 1.什么是内购? 如果你购买的商品,是在本app中使用和消耗的,就一定 ...
- EA添加时序图
在项目浏览器的空白处右击 http://blog.csdn.net/craftsman1970/article/details/70877530 不同于大部分面向对象或者UML的书籍,在讨论完类图/对 ...
- 解压与压缩(把dataset转为string、、 )
/// <summary> /// 压缩 解压 /// </summary> public class ZipHelper { #region 压缩解缩 /// <sum ...
- day--40 mysql-视图,触发器,存储过程,函数总结
视图,触发器,存储过程,函数总结 一:视图 01:介绍 视图是一个虚拟表(非真实存在),是跑到内存中的表,真实表是硬盘上的表,怎么就得到了虚拟表,就是你查询的结果,只不过之 前我们查询出来的虚拟表,从 ...
- 基于JsonPath和XmlPath的对象映射(Object Mapping)
rest-assured支持映射Java对象到Json和XML以及从Json和XML中映射到Java对象.Json映射需要在classpath 中有Jackson.Jackson 2或者是Gson,X ...