JAVA秒表,可定时到秒!

Java秒表,实现了以秒计时和以圈计时!

话不多说,上源码!

package timerDemo;

import java.awt.BorderLayout;

public class TimerCountDemo extends JPanel implements Runnable,ActionListener{
	private ScrollPane scrollPane;
	private TextArea resultTimeText;
	private JLabel currentTimeLabel;
	private Calendar currentCalendar;
	private Date currentDate;
	private JButton startJButton;
	private JButton quanJButton;
	private JButton secondButton;
	private JButton stopJButton;
	private JButton showTimeJButton;
	private Thread t;
	private static int i=1;                          //圈数
	private static int hour,min,sec,msec,totalTime;
	private static boolean flag=true;

	public TimerCountDemo() {
		// TODO Auto-generated constructor stub
		startJButton=new JButton("开始");
		showTimeJButton=new JButton("00-00-00");
		showTimeJButton.setBackground(SystemColor.activeCaption);
		showTimeJButton.setFont(new Font("叶根友钢笔行书升级版", Font.PLAIN, 14));
		quanJButton=new JButton("以圈计时");
		quanJButton.setEnabled(false);        //初始化时设为false
		secondButton=new JButton("以秒计时");
		secondButton.setEnabled(false);       //初始化时设为false
		stopJButton=new JButton("停止");
		stopJButton.setBackground(Color.red);  //设置背景色为红色
		scrollPane=new ScrollPane();
		resultTimeText=new TextArea(20,20);
		resultTimeText.setEditable(false);
		scrollPane.setEnabled(true);
		currentCalendar=Calendar.getInstance();
		scrollPane.setBackground(Color.WHITE);
		currentTimeLabel=new JLabel();
		currentDate=new Date();
		currentTimeLabel.setText("当前时间:");

		this.setLayout(new BorderLayout());
		JPanel pNorth=new JPanel(new GridLayout(2,1));
		pNorth.add(currentTimeLabel);
		pNorth.add(showTimeJButton);
		this.add(pNorth,BorderLayout.NORTH);             //添加当前时间Label
		this.add(scrollPane,BorderLayout.CENTER);                   //添加
		JPanel panel=new JPanel(new GridLayout(2,2));
		panel.add(quanJButton);
		panel.add(secondButton);
		panel.add(startJButton);
		panel.add(stopJButton);
		this.add(panel,BorderLayout.SOUTH);
		t=new Thread(this);
		t.start();
		startJButton.addActionListener(this);
		quanJButton.addActionListener(this);
		secondButton.addActionListener(this);
		stopJButton.addActionListener(this);
	}
	@Override
	public void run() {
		// TODO Auto-generated method stub
		try {
			while(true){
				int mHour=new Date().getHours();
				int mMin=new Date().getMinutes();
				int mSec=new Date().getSeconds();
				int mTotalTime=mHour*3600+mMin*60+mSec;
				int diffHour=(mTotalTime-totalTime)/3600;
				int diffMin=(mTotalTime-totalTime)%3600/60;
				int diffSec=(mTotalTime-totalTime)%3600%60;
				Thread.sleep(10);
				currentTimeLabel.setText("当前时间:"+mHour+":"+mMin+":"+mSec);
				if(!flag){
					showTimeJButton.setText(""+diffHour+"-"+diffMin+"-"+diffSec);
				}//if(!flag)
			}//while

		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}

	}
	@SuppressWarnings("deprecation")
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if(e.getSource()==startJButton){
			hour= (new Date()).getHours();
			min=(new Date()).getMinutes();
		    sec=(new Date()).getSeconds();
		    totalTime=hour*3600+min*60+sec;
		    startJButton.setEnabled(false);
		    quanJButton.setEnabled(true);
		    secondButton.setEnabled(true);
		    flag=false;
		}
		//if(!flag){
			int xhour=new Date().getHours();           //获得此刻小时
			int xmin=new Date().getMinutes();          //获得此刻分钟
			int xSec=new Date().getSeconds();          //获得此刻秒
			int xTotalTime=xhour*3600+xmin*60+xSec;    //获取此刻总时间

			int bHour=(xTotalTime-totalTime)/3600;
			int bMin=(xTotalTime-totalTime)%3600/60;
			int bSec=(xTotalTime-totalTime)%3600%60;

			//quanJButton
			if(e.getSource()==quanJButton){
				resultTimeText.append("第"+(i++)+"圈:"+bHour+":"+bMin+":"+bSec+"\n");
				scrollPane.add(resultTimeText);
				secondButton.setEnabled(false);
			}//quanJButton

			//secondButton
			if(e.getSource()==secondButton){
				resultTimeText.append(bHour+":"+bMin+":"+bSec+"\n");
				scrollPane.add(resultTimeText);
				quanJButton.setEnabled(false);
			}//secondButton

			//stopJButton
			if(e.getSource()==stopJButton){
				if(stopJButton.getText()=="停止"){
					//System.out.println("Test停止");
					hour=0;
					sec=0;
					min=0;
					stopJButton.setText("清除");
					quanJButton.setEnabled(false);
					secondButton.setEnabled(false);
					flag=true;
				}//stopJButton.getText()=="停止"
				else if(stopJButton.getText()=="清除"){
					i=1;
					stopJButton.setText("停止");
					resultTimeText.setText("");
					startJButton.setEnabled(true);
					showTimeJButton.setText("00-00-00");
				}//stopJButton.setText("清除");
			}//stopJButton
		}//if(!flag)
	//	flag=false;
	//}//if(!flag)
	public static void main(String args[]){
		JFrame jf=new JFrame("Demo");
		try{
			UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
		}catch(Exception e){
			e.printStackTrace();
		}
		TimerCountDemo xCountDemo=new TimerCountDemo();
		jf.setBounds(200,200,250,300);
		jf.getContentPane().add(xCountDemo);
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		jf.setVisible(true);
	}
}

初始化界面

开始

以圈计时

以圈计时

以秒计时

源码地址

时间: 2024-10-07 16:12:33

JAVA秒表,可定时到秒!的相关文章

java 多线程——quartz 定时调度的例子

java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 java 多线程—— 线程等待与唤醒 概述 第1部分 配置 第2部分 代码示例 第1部分 配置 有关quartz的api文档地址:Quartz Enterprise Job Scheduler 1.8.6 API 主要接口目录: 重点看下Job,Scheduler,Trigger,JobDetai

Linux(centos 6.5) 调用java脚本以及定时运行的脚本实例及配置文件具体解释

Linux(centos 6.5) 调用java脚本以及定时运行的脚本实例 一.调用java程序脚本(默认已经搭建好了Java环境) 1.jdk 安装路径 /usr/jdk/jdk1.7/-- 2.java 程序路径 /usr/jdk 3.类名:Test.java(有主函数的类名) 4.调用java类的脚本,注意脚本的后缀是.sh 5.脚本内容: (1)#! /bin/bash // #! 特殊符号.说明这个脚本是由/bin 文件夹下的bash这个shell来解释并将解释后的内容给kernel来

java 多线程——一个定时调度的例子

java 多线程目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 学习了一段时间的多线程内容,项目中有个定时调度的需求,将之前的需求重新梳理了下,写了一个多线程调用的例子,加深学习. 定时调度的需求如下:设定任务的开始时间,分为单次调度和循环调度,访问指定的url. java 多线程--一个定时调度的例子

java Timer(定时调用、实现固定时间执行)

最近需要用到定时调用的功能.可以通过java的Timer类来进行定时调用,下面是有关Timer的一些相关知识. 其实就Timer来讲就是一个调度器,而TimerTask呢只是一个实现了run方法的一个类,而具体的TimerTask需要由你自己来实现,例如这样: Timer timer = new Timer(); timer.schedule(new TimerTask() { public void run() { System.out.println("11232"); } },

java实现邮件定时发送

最近做项目时客户提出了一个需求:系统定时发送E-mail到其客户,达到通知的效果.先将实例分享给大家,如果确实有一些帮助的话,请大家来点掌声! 首先介绍java定时器(java.util.Timer)有定时执行计划任务的功能,通过设定定时器的间隔时间,会自动在此间隔时间后执行预先安排好的任务(java.util. TimerTask) 如: 每隔一个小时执行任务 timer.schedule(TimerTask, 0, 60 * 60 * 1000); schedule方法的第一个参数是需要执行

JAVA中的定时调度(Timer和TimerTask)

某些时候我们需要定时去完成一些任务,这里举一个例子:我们需要在3秒钟后打印当前系统时间,此后每隔5秒重复此操作.代码如下: import java.util.TimerTask; import java.util.Date; import java.util.Timer; import java.text.SimpleDateFormat; class ShowDateTask extends TimerTask { public void run() { SimpleDateFormat sd

java web每天定时执行任务

第一步: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 package com.eh.util; import java.util.Calendar; import java.util.Date; import java.util.Timer; /**  * java定时任务

java秒表

在java中实现秒表功能可以直接使用apache commons lang项目中的StopWatch类,它有几个常用的API start()  开始计时 stop()  结束计时 suspend()  暂停 resume() 恢复 reset() 重置秒表 getTime() 获取从开始计时到当前时间之间间隔的毫秒数

java中实现定时功能

网上资料: 我们可以使用Timer和TimerTask类在java中实现定时任务,详细说明如下: 1.基础知识java.util.Timer一种线程设施,用于安排以后在后台线程中执行的任务.可安排任务执行一次,或者定期重复执行.此类是线程安全的:多个线程可以共享单个 Timer 对象而无需进行外部同步.java.util.TimerTask由 Timer 安排为一次执行或重复执行的任务. 2.示例代码该示例实现这样一个功能,在系统运行期间,每30分钟,系统自动检查连接池中的可用连接数,并输出到日