java秒表计时器_Java-计时器/秒表GUI
问题是您的应用程序中只有一个线程.您应该至少有两个:一个用于更新文本的UI,另一个用于计算时间.
如果只有一个线程,它将挂在while(true)循环中,而Swing永远无法更新视图.
我使用两个线程重构了您的代码:
>一次计数直到时间结束,并更新字段以将时间保留在内存中
>每隔100毫秒调用一个使用java.util.Timer#scheduleAtFixedRate()方法的方法来更新视图.
Timer.java(避免像Java API中那样命名类)
public class Timer {
boolean shouldCount=false;
int int_sec=0;
int int_min=0;
int int_mil=0;
public Timer() {
}
public static void main(String[] args) {
TimeFrame t = new TimeFrame();
JFrame f = new JFrame("Timer");
f.setSize(300,200);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);
f.getContentPane().add(new TimeFrame());
f.setVisible(true);
}
public void count(){
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
long now = System.currentTimeMillis();
while(true){
if(shouldCount){
if(System.currentTimeMillis()-now>=100){
now=System.currentTimeMillis();
int_mil++;
if(int_mil>9){
int_mil=0;
int_sec++;
if(int_sec>=60){
int_sec=1;
int_min++;
}
}
}
}
}
}
});
thread.start();
}
}
}
TimeFrame(我更喜欢将其称为TimePanel,因为它扩展了JPanel)
public class TimeFrame extends JPanel{
JLabel time;
Timer t ;
JButton pause ;
JButton start ;
public TimeFrame(){
t= new Timer(this);
time = new JLabel("Time goes here", JLabel.CENTER);
pause = new JButton ("Pause");
start = new JButton ("Start");
start.addActionListener(new starts());
pause.addActionListener(new starts());
add(time);
add(start);
add(pause);
java.util.Timer updateTimer= new java.util.Timer();
updateTimer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
t.update(int_sec,int_min,int_mil);
}
}, 0, 100);
}
public void update(int s, int minute,int m){
String sec = Integer.toString(s);
String min = Integer.toString(minute);
String mil = Integer.toString(m);
if (s<=10){
sec="0"+sec;
}
System.out.println(min+":"+sec+","+mil);
time.setText(min+":"+sec+","+mil);
}
public class starts implements ActionListener{
boolean firstTime=true;
public void actionPerformed(ActionEvent event){
if (firstTime){
t.count();
firstTime = false;
}
if(event.getSource() == start){
t.shouldCount=true;
}else{
t.shouldCount=false;
}
}
}
}
java秒表计时器_Java-计时器/秒表GUI相关推荐
- java 秒表暂停_java – 停止秒表
我在JPanel类中有以下代码,它被添加到另一个类(JFrame)中.我正在尝试实施的是某种秒表计划. startBtn.addActionListener(new startListener()); ...
- java计时器_Java 计时器
1.Timer and TimerTask: Timer是jdk中提供的一个定时器工具,使用的时候会在主线程之外起一个单独的线程执行指定的计划任务,可以指定执行一次或者反复执行多次. TimerTas ...
- java swing 代码_java swing编写gui生命游戏代码,新手上路
项目描述 生命游戏其实是一个零玩家游戏,它包括一个二维矩形世界,这个世界中的每个方格居住着一个活着的或死了的细胞.一个细胞在下一个时刻生死取决于相邻八个方格中活着的或死了的细胞的数量.如果相邻方格活着 ...
- java 绘制长方形_Java如何使用GUI绘制一个实心的矩形?
在Java的GUI编程中,如何使用GUI绘制一个实心的矩形? 以下示例演示如何使用Graphics类的fillRect()方法显示一个实心矩形. package com.yiibai; import ...
- java秒表计时器_Java实现的计时器【秒表】功能示例
本文实例讲述了Java实现的计时器[秒表]功能.分享给大家供大家参考,具体如下: 应用名称:Java计时器 用到的知识:Java GUI编程 开发环境:win8+eclipse+jdk1.8 功能说明 ...
- java计时器_Java实现的计时器【秒表】功能示例
本文实例讲述了Java实现的计时器[秒表]功能.分享给大家供大家参考,具体如下: 应用名称:Java计时器 用到的知识:Java GUI编程 开发环境:win8+eclipse+jdk1.8 功能说明 ...
- Java高级教程3_图形用户界面GUI
张老师的Java高级教程中图形用户界面GUI对应的笔记 网络编辑器还要重新排版,提供原始文件下载,先看个概貌 Java高级3_图形用户界面GUI AWT的基础知识 GUI:Graphical User ...
- 用java的io做一个代码计数器,如何制作Java页面计数器_java
大庆采油六厂采油工艺研究所 王兵 王波 常常逛WWW的人,一定对许多起始页上的计数器感兴趣.每当你光临某个站点的起始页时,它的计数器就很亲切地告诉你,从某年某月某日开始,你是第几位光临的人.你可能也想 ...
- java中的图形界面编辑界面_第58节:Java中的图形界面编程-GUI
欢迎到我的简书查看我的文集 前言: GUI是图形用户界面,在Java中,图形用户界面我们用GUI表示,而GUI的完整英文为: Graphical User Interface(图形用户接口), 所谓图 ...
- 【源码+图片素材+详细教程】Java游戏开发_Java开发经典游戏飞翔的小鸟_飞扬的小鸟_Java游戏项目Flappy Bird像素鸟游戏_Java课程设计项目
课程目标: 1.通过本课程的学习巩固Java的相关基础知识,例如循环判断,数组和集合的使用,对象的继承,接口的实现,窗口的创建,事件监听,图形绘制. 2.完成小鸟的移动,管道自动生成.碰撞死亡,计分系 ...
最新文章
- Python与MySQL数据库的交互实战
- 普通话计算机考试相关信息,普通话考试常见问题有哪些
- flask_入门教程之一
- sqlserver 班级排名_Sqlserver:班级排名问题(转发)
- Android 第十五课 如何使用LitePal从SQLite数据库中删除数据(十四课用来保留讲解如何向SQLite数据库中存入数据)
- java菜鸟到cto 图_从菜鸟到入门,掌握 Log4j
- 【Linux网络编程学习】I/O多路复用——select和poll
- 大数据驱动5G网络与服务优化
- tomcat集群共享session
- uefi下的开机顺序_如何访问UEFI或BIOS并进行设置?
- java修改.class重新打包jar
- 完全总结bash中的条件判断test [ [[ 使用
- HTC手机如何进行官方解锁Unlock
- 信息学奥赛一本通1368 对称二叉树
- Unity Shader·科技感描边效果(利用Robert算子边缘检测)
- LayaBox---TypeScript---基础数据类型
- 网吧web电影服务器系统,网吧WEB、游戏、影视服务器应用需求分析
- pandas数据类型转为str
- 【XSY2515】管道(pipe)(最小生成树+倍增lca)
- 使用MATLAB连接USRP实现收发OFDM功能代码说明
热门文章
- C语言中scanf与分隔符(空格回车Tab)
- 独立站选杂货爆品站还是精耕垂直站?
- 我的第二个独立开发的邮箱类App—“简邮”(支持QQ、雅虎、阿里云、Outlook)
- 华科计算机硕士什么时候能去实习,研究生期间是出去实习还是老老实实做科研?...
- 工作流Activiti初体验—流程撤回【二】
- [HarmonyOS][鸿蒙专栏开篇]快速入门OpenHarmony的LiteOS微内核
- http状态码有哪些 ,表示了什么
- 5、6月程序员“薪资被应届生倒挂“现象明显,跳槽还是等待?
- html去除图片链接边框及其链接虚线
- ExtCertPathValidatorException: Could not validate certificate: null