您的位置:首页 > 编程语言 > Java开发

利用Java制作倒计时

2012-10-15 19:15 302 查看
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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: