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

遇到了计时器功能的需求,但是这个我没用过,就总结一下吧,不过虽然是会用了,但是和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();

}

}

都可以直接运行。

转载于:https://www.cnblogs.com/shiyangxt/archive/2009/01/25/1380815.html

Java计时器Timer和TimerTask用法总结(源码)相关推荐

  1. java.util.timer 定时任务_java.util系列源码解读之Timer定时器

    Timer是jdk1.3中自带的定时任务框架系统.一个调度定时任务的工具线程类.可以执行一个只调度一次的任务也可以重复调度一个一定间隔时间的任务. 一个Timer实例就是一个调度任务调度线程.当任务队 ...

  2. Java 中Timer和TimerTask 定时器和定时任务使用的例子

    转载自  Java 中Timer和TimerTask 定时器和定时任务使用的例子 这两个类使用起来非常方便,可以完成我们对定时器的绝大多数需求 Timer类是用来执行任务的类,它接受一个TimerTa ...

  3. java step1:基础知识5(java中Timer和TimerTask的使用)

    1.定时任务:java中Timer和TimerTask的使用 转载自http://batitan.iteye.com/blog/253483 转载于:https://www.cnblogs.com/s ...

  4. 使用Java实现发送微信消息(附源码)_此程序在手再也不怕对象跟你闹了

    使用Java实现发送微信消息(附源码)_此程序在手再也不怕对象跟你闹了 此程序在手再也不怕女朋友跟你闹了!!!!自从有了女朋友比如:早安.晚安之类的问候语可不能断,但是也难免有时候会忘记那么该咋么办呢 ...

  5. 一文了解 lambda 用法与源码分析

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | cmlanche.com/2018/07/22 ...

  6. 你真的了解lambda吗?一文让你明白lambda用法与源码分析

    本文作者: cmlanche 本文链接: http://www.cmlanche.com/2018/07/22/lambda用法与源码分析/ 转载来源:cmlanche.com 用法 示例:最普遍的一 ...

  7. Java实战项目之人力资源管理系统【源码+课后指导】_Java毕业设计/计算机毕业设计

    对就业和毕业都有帮助的Java实战项目来咯--人力资源管理系统!Java实战项目之人力资源管理系统[源码+课后指导]_Java毕业设计/计算机毕业设计https://www.bilibili.com/ ...

  8. java钢琴键_javapiano Java Piano模拟钢琴效果的完整源码 联合开发网 - pudn.com

    javapiano 所属分类:Java编程 开发工具:Java 文件大小:32KB 下载次数:10 上传日期:2014-04-15 21:09:50 上 传 者:王小强 说明:  Java Piano ...

  9. Java的三种代理模式完整源码分析

    Java的三种代理模式&完整源码分析 Java的三种代理模式&完整源码分析 参考资料: 博客园-Java的三种代理模式 简书-JDK动态代理-超详细源码分析 [博客园-WeakCach ...

最新文章

  1. Yii2掉index.php?r=
  2. leangoo敏捷开发看板工具
  3. Qt学习笔记之 字符串类型小结
  4. struts2 简单登录校验示例
  5. 《文献管理与信息分析》课程学习笔记
  6. Spring Boot定时任务-Quartz介绍
  7. 掌握神经网络,入门深度学习
  8. vue判断组件是否显示_vue组件中watch props根据v-if动态判断并挂载DOM的问题
  9. Oracle_spatial的空间索引
  10. 人眼定位python代码_使用dlib,OpenCV和Python进行人脸识别—人眼眨眼检测
  11. 连接访问数据库的技术方法
  12. 基于51单片机的红外遥控电风扇
  13. linux中man命令的基本用法,linux中的man命令的详细解释
  14. 中国经济形势开年如何看?
  15. 佳能驱动支持,佳能打印机驱动无法安装的解决方法
  16. 【Py】基于Python的身份证读卡器二开全记录
  17. 华为接班人准备好了吗? (转载)
  18. 2013.6甲骨文公司的电话面试
  19. 【拼多多笔试题】小熊战斗力
  20. 炸弹人问题(加强版)

热门文章

  1. zoj——3556 How Many Sets I
  2. 发展大数据还有三道坎要迈
  3. 在 Shell 脚本里使用数组
  4. java基础之面试篇四-单向链表和双向链表区别
  5. 本人制作的股票技术分析软件正式开源(.net wpf)
  6. 哀悼日使站点变灰色调的方法
  7. 谈谈《潜伏在办公室》对管理层的影响
  8. 传微软有意收购EA公司,连《绝地求生》的蓝洞也想一并收入囊中
  9. Express中间件--connect-mongodb-session
  10. 不要过高估计SDN的能力,也善于发现SDN技术的缺陷之美