Java计时器Timer和TimerTask用法总结(源码)

简介:

      在家学技术实在是不好坚持,心里老是想给自己放个假,但是现在俺又太菜,又想赶赶技术。前天做一个五子棋程序,

遇到了计时器功能的需求,但是这个我没用过,就总结一下吧,不过虽然是会用了,但是和swing的代码整合还是有问题,困扰好久

,到现在也没解决,一气之下,看了三部电影,呵呵。

               这个计时器,就是为了使在下五子棋过程中,黑白双方,轮流下的时候,给下棋一方计时,并且要求,时间动态显示在

面板上,就是一秒一秒在走的效果,等这方下了之后,这方的时间停,另一方的表开始走。因为我这个计时器的时间显示是通过

Graphics手绘在面板上显示的,并不是单独一个文本域显示,所以每走一秒要重绘一次面板,功能需求十分的不爽。而Java实现

倒计时,需要递归调用,本来实现秒表就够麻烦了,还要和JFrame整合在一起,JFrame的状态标识属性又多,看着看着就晕了。

尝试个很多次,都没实现。不过timer这个计时器倒是实现了,其实如果那个计时器实现了,这个五子棋就完美了,然后就可以用我想的

广义遍历坐标算法尝试实现人工智能了,就是模拟人机对战。但是这个功能不搞定,实在没心情往下写代码了。好了起因就说到这。

              下面给两份源码,一份是基本的,一份是整合JFrame的,不过这个整合和俺的需求不符,所以没用上。

下面是基本类的使用源码:

复制代码
package  com.sy.game.test;

import  java.util.Timer;
import  java.util.TimerTask;

public   class  TimeTask {   
   
    
public   static   void  main(String[] args) { 
        TimeTask tTask
= new  TimeTask();
        tTask.timeVoid();
    }
    
    
public   void  timeVoid(){
        
final  Timer timer  =   new  Timer();
        TimerTask tt
= new  TimerTask() { 
            @Override
            
public   void  run() {
                System.out.println(
" 到点啦! " );
                timer.cancel();
            }
        };
        timer.schedule(tt, 
3000 );
    }
}

复制代码

 

整合的:

复制代码
/*
 * java倒计时器
 * shiyang
 * 
*/

package  com.sy.game.test;

import  java.awt.Container;
import  java.awt.FlowLayout;
import  java.awt.Toolkit;
import  java.awt.event.ActionEvent;
import  java.awt.event.ActionListener;

import  javax.swing.JButton;
import  javax.swing.JFrame;
import  javax.swing.JPanel;
import  javax.swing.JTextField;
import  javax.swing.Timer;

@SuppressWarnings(
" unused " )
public   class  TimeController  extends  JFrame  implements  ActionListener {

    
private   static   final   long  serialVersionUID  =   4603262282860990473L ;

    
private   static   final   int  DEFAULT_WIDTH  =   200 ;
    
private   static   final   int  DEFAULT_HEIGHT  =   100 ;
    
private   static   final   int  width  =  Toolkit.getDefaultToolkit()
            .getScreenSize().width;
    
private   static   final   int  height  =  Toolkit.getDefaultToolkit()
            .getScreenSize().height;
    
private  Container container;
    
private  JButton btn;
    
private  JTextField jtfTime;
    
private  Timer tmr;

    
public  TimeController() {
        initComponents();
        Timer tmr 
=   new  Timer( 1000 this );
        
this .tmr  =  tmr;
        setVisible(
true );
    }

    
private   void  initComponents() {
        
        
this .setTitle( " SY秒表 " );

        
this .setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
        
        
this .setResizable( false );
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
this .setLocation((width  -  DEFAULT_WIDTH)  /   2 ,
                (height 
-  DEFAULT_HEIGHT)  /   2 );
        
        jtfTime 
=   new  JTextField( " 10 " );

        btn 
=   new  JButton( " 开始倒计时 " );
        
        container 
=  getContentPane();

        JPanel panel 
=   new  JPanel();
        panel.add(btn);
        panel.add(jtfTime);

        
this .add(panel);
        btn.addActionListener(
this );
    }

    
public   void  actionPerformed(ActionEvent ae) {

        
if  (ae.getSource()  ==  btn) {
            jtfTime.setText(
" 10 " );
            tmr.start();
        } 
else  {
            
int  t;
            t 
=  Integer.parseInt(jtfTime.getText());
            t
-- ;
            jtfTime.setText(
""   +  t);

            
if  (t  <=   0 ) {
                tmr.stop();
            }
        }
    }

    
public   static   void  main(String[] args) {
        TimeController timeController 
=   new  TimeController();

    }

}
复制代码

 

都可以直接运行。


本文转自施杨博客园博客,原文链接:http://www.cnblogs.com/shiyangxt/archive/2009/01/25/1380815.html,如需转载请自行联系原作者

相关文章
|
6天前
|
运维 Java
Java版HIS系统 云HIS系统 云HIS源码 结构简洁、代码规范易阅读
云HIS系统分为两个大的系统,一个是基层卫生健康云综合管理系统,另一个是基层卫生健康云业务系统。基层卫生健康云综合管理系统由运营商、开发商和监管机构使用,用来进行运营管理、运维管理和综合监管。基层卫生健康云业务系统由基层医院使用,用来支撑医院各类业务运转。
28 5
|
1天前
|
搜索推荐 前端开发 Java
java医院绩效考核管理系统项目源码
系统需要和his系统进行对接,按照设定周期,从his系统获取医院科室和医生、护士、其他人员工作量,对没有录入信息化系统的工作量,绩效考核系统设有手工录入功能(可以批量导入),对获取的数据系统按照设定的公式进行汇算,且设置审核机制,可以退回修正,系统功能强大,完全模拟医院实际绩效核算过程,且每步核算都可以进行调整和参数设置,能适应医院多种绩效核算方式。
3 0
|
1天前
|
设计模式 算法 Java
[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
|
1天前
|
设计模式 JavaScript Java
[设计模式Java实现附plantuml源码~行为型] 对象状态及其转换——状态模式
[设计模式Java实现附plantuml源码~行为型] 对象状态及其转换——状态模式
|
1天前
|
设计模式 存储 JavaScript
[设计模式Java实现附plantuml源码~创建型] 多态工厂的实现——工厂方法模式
[设计模式Java实现附plantuml源码~创建型] 多态工厂的实现——工厂方法模式
|
1天前
|
设计模式 Java Go
[设计模式Java实现附plantuml源码~创建型] 集中式工厂的实现~简单工厂模式
[设计模式Java实现附plantuml源码~创建型] 集中式工厂的实现~简单工厂模式
|
2天前
|
Java 调度
Java面试必考题之线程的生命周期,结合源码,透彻讲解!
Java面试必考题之线程的生命周期,结合源码,透彻讲解!
24 1
|
6天前
|
JavaScript Java 测试技术
基于Java的电影评论系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的电影评论系统的设计与实现(源码+lw+部署文档+讲解等)
21 0
|
6天前
|
JavaScript Java 测试技术
基于Java的在线日语培训平台的设计与实现(源码+lw+部署文档+讲解等)
基于Java的在线日语培训平台的设计与实现(源码+lw+部署文档+讲解等)
23 0
|
6天前
|
JavaScript Java 测试技术
基于Java的同城蔬菜配送管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的同城蔬菜配送管理系统的设计与实现(源码+lw+部署文档+讲解等)
11 0