利用Java制作倒计时

来源:互联网 发布:linux误删文件恢复 编辑:程序博客网 时间:2024/05/12 16:31



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 stublabel = 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 stubthis.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 stubthis.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 stubonetime = 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;elsethis.Sminitues = "" + minitues;if (sound < 10)this.Ssound = "0" + sound;elsethis.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>