如何用java实现一个计时器?

如何用java实现一个计时器?,第1张

用java实现一个计时器的方法:

publicclassTestDingShiimplementsRunnable

{

Threadxc

Daodao=newDaoImpl()

publicTestDingShi()

{

xc=newThread(this)//线程开启

xc.start()

}

publicvoidrun()

{

while(true)

{

try

{

xc.sleep(1000)//睡眠开始计时

}

catch(InterruptedExceptione)

{

//TODOAuto-generatedcatchblock

e.printStackTrace()

}

//TODO定时在此

}

}

}

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()

}

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11897016.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存