利用Java制作倒计时



import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;

public class Clock extends JFrame {
	private Dialog dialog;

	public static void main(String[] args) {
		Clock f = new Clock();
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setVisible(true);

	}

	class MyDialog extends Dialog implements WindowListener, ActionListener {
		JLabel label;

		JPanel panel1, panel2;

		JButton button;

		public MyDialog(Frame owner, String title, boolean modal) {
			super(owner, title, modal);
			// TODO Auto-generated constructor stub
			label = new JLabel("时间到!");
			button = new JButton("确定");
			panel1 = new JPanel();
			panel2 = new JPanel();
			panel1.setLayout(new BorderLayout());
			panel1.add("Center", label);
			panel2.add("Center", button);
			this.add("Center", panel1);
			this.add("South", panel2);
			this.setSize(200, 200);
			this.setResizable(false);
			this.addWindowListener(this);
			button.addActionListener(this);
		}

		public void windowOpened(WindowEvent e) {
			// TODO Auto-generated method stub

		}

		public void windowClosing(WindowEvent e) {
			// TODO Auto-generated method stub
			this.setVisible(false);
		}

		public void windowClosed(WindowEvent e) {
			// TODO Auto-generated method stub

		}

		public void windowIconified(WindowEvent e) {
			// TODO Auto-generated method stub

		}

		public void windowDeiconified(WindowEvent e) {
			// TODO Auto-generated method stub

		}

		public void windowActivated(WindowEvent e) {
			// TODO Auto-generated method stub

		}

		public void windowDeactivated(WindowEvent e) {
			// TODO Auto-generated method stub

		}

		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			this.setVisible(false);
		}

	}

	Clock() {
		setTitle("倒计时");
		setSize(320, 120);
		dialog = new MyDialog(this, "提示:", true);
		ClockPanel p = new ClockPanel();
		add(p);
	}

	class ClockPanel extends JPanel {

		private JButton b;

		private boolean onetime = true;;

		private JLabel lfen, lmiao, l;

		private JTextField tf, tm;

		ClockPanel() {
			b = new JButton("开始倒计时");
			lfen = new JLabel("分");
			lmiao = new JLabel("秒");
			l = new JLabel("00:00");
			tf = new JTextField(3);
			tm = new JTextField(3);

			l.setFont(new Font("宋体", Font.BOLD, 30));
			l.setForeground(Color.RED);

			b.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent arg0) {
					if (onetime) {
						if (tf.getText().trim().equals("")) {    
							tf.setText("00");
						}
						if (tm.getText().trim().equals("")) {
							tm.setText("00");
						}
						new ChangeLabel(tf.getText().trim() + ":"
								+ tm.getText().trim()).start();
					}
				}
			});

			add(tf);
			add(lfen);
			add(tm);
			add(lmiao);	//添加秒
			add(b);
			add(l);

		}

		class ChangeLabel extends Thread // 运行秒针线程
		{

			private int minitues;

			private String Sminitues;

			private int sound;

			private String Ssound;

			private String LabelTime;

			public ChangeLabel(String time) {
				// TODO Auto-generated constructor stub
				onetime = false;
				this.minitues = Integer.parseInt(time.substring(0,
						time.indexOf(':')));

				this.sound = Integer
						.parseInt(time.substring(time.indexOf(':') + 1));
			}

			private long time1;

			private long time2;

			public void run() {
				time1 = System.currentTimeMillis();
				while (true) {
					time2 = System.currentTimeMillis();
					while (!(minitues == 0 & sound == 0)
							&& time2 >= time1 + 1000) {
						time1 = time2;
						if (sound == 0) {
							sound = 59;
							minitues--;
						} else {
							sound--;
						}
						LabelTime = this.getTime();
						display();
					}
					if (minitues == 0 && sound == 0) {
						dialog.setVisible(true);
						onetime = true;
						break;
					}
				}
			}

			private String getTime() {
				if (minitues < 10)
					this.Sminitues = "0" + minitues;
				else
					this.Sminitues = "" + minitues;
				if (sound < 10)
					this.Ssound = "0" + sound;
				else
					this.Ssound = "" + sound;
				return this.Sminitues + ":" + this.Ssound;
			}

			public void display() {
				/*
				 * 显示倒计时
				 */
				l.setText(this.LabelTime);
			}
		}
	}
}





______________________________________________

另外一个

60秒倒计时的一个小JAVASCRIPT


<table name=agree border="0" cellpadding="10" cellspacing="0" align=center width="80%">
<tr align=center>
<td width="50%" align="right"> 
<FORM name=register method=post action=reg_shang.ASP?action=yes>
<input type="hidden" name="action" value="agree"><INPUT class="go-wenbenkuang" type=submit value=" 同意注册 " name=Submit>
</FORM> 
</td>
<td width="50%" align="left">
<FORM action=index.asp method=post><INPUT class=go-wenbenkuang type=submit value=" 我不同意 "></FORM></td>
</tr>
</table>

<SCRIPT>
secs = 60; // Number of secs to delay -CHINA-studio
wait = secs * 100;
document.forms.register.Submit.disabled =true;
for(i=1;i<=(wait/100);i++) {
window.setTimeout("doUpdate(" + i + ")", i * 100);
}
window.setTimeout("Timer()", wait);

function doUpdate(num) {
if(num == (wait/100)) {
document.forms.register.Submit.value = " 同意注册 ";
} else {
wut = (wait/100)-num;
document.forms.register.Submit.value = " 同意前请先阅读 (" + wut + ")";
}
}

function Timer() {
document.forms.register.Submit.disabled =false;
}
</SCRIPT>

---另外一种直接可以解析的方法

<script>

<!--

//获得当前时间,刻度为一千分一秒

var initializationTime=(new Date()).getTime();

function showLeftTime(){

var now=new Date();

var year=now.getYear();

var month=now.getMonth();

var day=now.getDate();

var hours=now.getHours();

var minutes=now.getMinutes();

var seconds=now.getSeconds();

document.all.show.innerHTML="当前时间:"+year+"年"+month+"月"+day+"日"+hours+"小时"+minutes+"分"+seconds+"秒";

//设定结束时间

//1秒=1000毫秒

endTime=initializationTime+60000;

//设定并显示剩余时间

var leftTime=Math.floor((endTime-(new Date()).getTime())/1000);

if(leftTime>0)

{

document.all.showLeft.innerHTML=leftTime+"微秒后停止!";

}

else

{

clearTimeout(timeID);

document.all.showLeft.innerHTML="TimeOut!";

return false;

}

//一秒刷新一次显示时间

var timeID=setTimeout(showLeftTime,1000);

}

//-->

</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值