永发信息网

java 倒计时

答案:2  悬赏:80  手机版
解决时间 2021-01-22 12:02
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);
}
}
}
}
全部回答
利用多线程
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
蓝胖子奶粉好 还是德运好
下列语句正确的是A.画直线AB=10厘米B.过任意
候家宾馆这个地址在什么地方,我要处理点事
目前在职有工作、打算创业、抽签吕祖灵签三十
经常想拉尿是什么原因呢
怎么弄啊
汽车充气泵十二伏的多少钱
X十X十0十0=18。X十X十0=1。看X有几个。0有
谁字去掉言字旁是什么字
php求5的阶乘的程序
哪位专家能帮下忙,请问盆景金桔是自授粉吗?
南京建邺育儿嫂育婴师一般多少钱
在哪里查个人社保账户
211和985大学里有哪些可以通过编导考?
怎么把文件夹里的子文件全都弄出来
推荐资讯
卖房注意事项:这样卖房一定不会错!
从杭州到北京坐T32,是在杭州的哪个站坐车的?
先化简再求值:3m的平方
如何在excel里计算不同日期两个时间之间有多
怎样替他人还款
VC++获取对话框大小
苏州橘子网络科技有限公司总经理是谁?
单选题2011年3月11日,日本大地震引发了福岛
java中,匿名类在创建的同时必须要创建对象,
雨花区长沙金九台球俱乐部怎么去啊,谁知道地
帕尔拉客干洗水洗部地址在哪,我要去那里办事
小龙人童装地址好找么,我有些事要过去,
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?