如何在java设计的程序中加入一个倒计时功能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在java设计的程序中加入一个倒计时功能相关的知识,希望对你有一定的参考价值。

功能类似于围棋每走一步都进行计时的功能

参考技术A import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Timer;
import java.util.TimerTask;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class TimeThreadFrame extends JFrame
// 定义组件
private JLabel lblTime;
private JTextField txtInput;
private JButton btnEnter;
// 构造方法
public TimeThreadFrame()
// 设置窗体的相关属性
super("TimerThread");
this.setSize(300,200);
this.setLayout(null);
this.setLocation(100,50);
// 创建组件
this.lblTime = new JLabel("请输入倒计时时间");
this.lblTime.setBounds(30,20,200,30);
this.txtInput = new JTextField();
this.txtInput.setBounds(30,70,100,30);
this.btnEnter = new JButton("确定");
this.btnEnter.setBounds(150,70,70,30);
// 给JTextField注册监听
this.txtInput.addKeyListener(new KeyListener()
public void keyPressed(KeyEvent ke)

public void keyReleased(KeyEvent ke)

public void keyTyped(KeyEvent ke)
txtInput_KeyTyped(ke);

);
// 给JButton注册监听
this.btnEnter.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent ae)
btnEnter_ActionPerformed(ae);

);
// 将各组件添加到窗体上
add(lblTime);
add(txtInput);
add(btnEnter);
// 显示窗体
this.setVisible(true);

// 输入时的事件处理,控制用户只能输入数字
public void txtInput_KeyTyped(KeyEvent ke)
if(ke.getKeyChar() < '0' || ke.getKeyChar() > '9')
ke.setKeyChar('\0');


// 点击按钮时的事件处理,核心!
public void btnEnter_ActionPerformed(ActionEvent ae)
// 获得用户输入的倒计时时间
String strTime = this.txtInput.getText();
if(strTime.equals(""))
// 检测用户是否输入
this.lblTime.setText("您尚未输入,请输入!");

else
Integer time = Integer.parseInt(strTime);
// 创建线程
TimeThread tt = new TimeThread(this.lblTime,time);
tt.start();
// 创建Timer
Timer timer = new Timer();
timer.schedule(new TimerTask()
// 启动其他程序
public void run()
System.out.print("ok");

, time * 1000);



// 启动窗体
public static void main(String[] args)
new TimeThreadFrame();


// 时间线程类
class TimeThread extends Thread
private JLabel lblTime;
private int time;
// 构造方法传入,显示事件的JLabel和倒计时的时间。
public TimeThread(JLabel lblTime, int time)
this.lblTime = lblTime;
this.time = time;

// run方法
public void run()
while(time > 0)
// 显示所剩时间
this.lblTime.setText("所剩时间:" + time);
// 所剩时间减少
time--;
try
this.sleep(1000);
catch (InterruptedException e)
e.printStackTrace();



本回答被提问者采纳

关于Qt:如何在状态栏中加入系统时间或程序运行时间?

想用Qt创建个窗口,然后在窗口的状态栏中加入系统时间,或者窗口运行时间……求解决方法啊~~~~
还有状态栏如何分栏

参考技术A Qt的系统时间,有相应的接口。你网上查查就好,很好做。程序运行时间,你可以用一定时器,程序一运行就开始计时,将时间显示在界面上就可以了。。。。你的状态栏分栏是什么意思?追问

就是状态栏分成两部分,都左对齐。或者知道如何控制状态栏中信息的位置也可以。时间的加入已经解决了。

追答

move()这个吗?

参考技术B 最简单的方法用空格占位 试试 参考技术C 添加两个状态栏追问

不好使啊,新加的状态栏跑到上面menubar的位置去了,而且感觉就是在下面,两个状态栏也会覆盖

追答

QStatusBar *statusbar = this->statusBar();
QLabel *statulabel = new QLabel("222");
QLabel *statulabel1 = new QLabel("333");
QLabel *statulabel2 = new QLabel(tr("系统时间:"));
QLabel *statulabel3 = new QLabel(tr("运行时间:"));
statusbar->addWidget(statulabel2);
statusbar->addWidget(statulabel);
statusbar->addWidget(statulabel3);
statusbar->addWidget(statulabel1);
希望能解决你的问题

以上是关于如何在java设计的程序中加入一个倒计时功能的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring JPA 存储库中加入多个表的结果

如何在JAVA中加入没有重复列的Spark数据框

如何在JAVA中加入没有重复列的Spark数据框

Apache Pig 如何在加载功能中加入白名单或黑名单?

如何在java读取文件的路径中加入变量

教你在微信公众号中加入订单预约登记投诉和反馈等功能