首页编程java编程java什么是倒计时,java启用一个倒计时任务

java什么是倒计时,java启用一个倒计时任务

编程之家2023-10-1279次浏览

这篇文章给大家聊聊关于java什么是倒计时,以及java启用一个倒计时任务对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

java什么是倒计时,java启用一个倒计时任务

谁有用java的application编写的倒计时钟代码

package hello;

import java.awt.*;

import java.applet.*;

java什么是倒计时,java启用一个倒计时任务

import java.awt.event.*;

import java.util.*;

import java.awt.geom.*;

java什么是倒计时,java启用一个倒计时任务

public class T extends Applet implements Runnable{

Thread tHour= null,tMinute= null,tSecond= null;//表示时针,分针和秒针的线程

int hour_a,hour_b,minute_a,minute_b,second_a,second_b;//表示时针,分针,秒针端点的整型变量

int hour= 0,minute= 0,second= 0;//获取当前时间的整型变量

//绘制时针,分针和秒针的Graphics对象

Graphics g_second= null,g_minute= null,g_hour=null;

//存放表盘刻度的数组,供指针走动时使用

double point_x[]= new double[61],point_y[]= new double[61];

//存放表盘刻度的数组,供绘制表盘使用

double scaled_x[]= new double[61],scaled_y[]= new double[61];

//判断小程序是否重新开始的变量

int start_count= 0;

public void init(){

g_hour= this.getGraphics();

g_hour.setColor(Color.CYAN);

g_second= this.getGraphics();

g_second.setColor(Color.RED);

g_minute= this.getGraphics();

g_minute.setColor(Color.blue);

g_second.translate(200,200);//进行坐标系统变换,将新坐标系原点设在(200,200)处

g_minute.translate(200,200);

g_hour.translate(200,200);

point_x[0]= 0; point_y[0]=-120;//各个时针12点处的位置坐标(按新坐标系的坐标)

scaled_x[0]= 0;scaled_y[0]=-140;//12点处的刻度位置坐标(按新坐标系的坐标)

double jiaodu= 6*Math.PI/180;

//表盘分割成60分,将分割点的坐标存放在数组中

for(int i= 0; i< 60; i++){

point_x[i+1]= point_x[i]*Math.cos(jiaodu)-Math.sin(jiaodu)*point_y[i];

point_y[i+1]= point_y[i]*Math.cos(jiaodu)+ point_x[i]*Math.sin(jiaodu);

}

point_x[60]= 0; point_y[60]=-120;

for(int i= 0; i< 60; i++){

scaled_x[i+1]= scaled_x[i]*Math.cos(jiaodu)-Math.sin(jiaodu)*scaled_y[i];

scaled_y[i+1]= scaled_y[i]*Math.cos(jiaodu)+ Math.sin(jiaodu)*scaled_x[i];

}

scaled_x[60]= 0;

scaled_y[60]=-140;

}

public void start(){

//每当小程序重新开始时,首先消灭线程,然后重新开始创建线程

if(start_count>= 1){

tSecond.interrupt();

tMinute.interrupt();

tHour.interrupt();

}

tSecond= new Thread(this);

tMinute= new Thread(this);

tHour= new Thread(this);

tSecond.start();

tMinute.start();

tHour.start();

start_count++;

if(start_count>= 2) start_count= 1;

}

public void stop()

{

tSecond.interrupt();

tMinute.interrupt();

tHour.interrupt();

}

public void paint(Graphics g){

this.start();

g.drawOval(50,50,300,300);//表盘的外圈

g.translate(200,200);

//绘制表盘的小刻度和大刻度

for(int i= 0; i< 60; i++){

if(i%5== 0){

g.setColor(Color.BLACK);

g.fillOval((int) scaled_x[i],(int) scaled_y[i],10,10);

}

else

g.fillOval((int)scaled_x[i],(int)scaled_y[i],5,5);

}

}

public void run(){

//获取本地时间

Date date= new Date();

String s=date.toString();

hour=Integer.parseInt(s.substring(11,13));

minute= Integer.parseInt(s.substring(14,16));

second= Integer.parseInt(s.substring(17,19));

if(Thread.currentThread()== tSecond){

second_a=(int)point_x[second];

second_b=(int)point_x[second];

g_second.drawLine(0,0,second_a,second_b);//秒针的初始位置

g_second.drawString("秒",second_a,second_b);

int i= second;

while(true){

try{

tSecond.sleep(1000);

Color c= getBackground();

g_second.setColor(c);

g_second.drawLine(0,0,second_a,second_b);//用背景色清除前一秒时的秒针

g_second.drawString("秒",second_a,second_b);

//如果秒针与分针重合,恢复分针的显示

if((second_a== minute_a)&&(second_b== minute_b)){

g_minute.drawLine(0,0,minute_a,minute_b);

g_minute.drawString("分",minute_a,minute_b);

}

//如果秒针与时针重合,恢复时针的显示

if((second_a== hour_a)&&(second_b== hour_b)){

g_hour.drawLine(0,0,hour_a,hour_b);

g_hour.drawString("时",hour_a,hour_b);

}

}

catch(InterruptedException e){

Color c= getBackground();

g_second.setColor(c);

g_second.drawLine(0,0,second_a,second_b);//用背景色清除秒针

g_second.drawString("秒",second_a,second_b);

return;

}

//秒针向前走一个单位

second_a=(int)point_x[(i+1)%60];

second_b=(int)point_y[(i+1)%60];//每一秒走6度(一个单位格)

g_second.setColor(Color.red);

g_second.drawLine(0,0,second_a,second_b);

g_second.drawString("秒",second_a,second_b);

i++;

}

}

if(Thread.currentThread()== tMinute){

minute_a=(int)point_x[minute];

minute_b=(int)point_y[minute];

g_minute.drawLine(0,0,minute_a,minute_b);

int i= minute;

while(true){

//第一次过60-second秒就前进一分钟,以后每过60秒前进一分钟

try{

tMinute.sleep(1000*60- second*1000);

second= 0;

Color c= getBackground();

g_minute.setColor(c);

g_minute.drawLine(0,0,minute_a,minute_b);

g_minute.drawString("分",minute_a,minute_b);

if((hour_a== minute_a)&&(hour_b== minute_b)){

g_hour.drawLine(0,0,minute_a,minute_b);

g_hour.drawString("时",hour_a,hour_b);

}

}

catch(InterruptedException e){

return;

}

minute_a=(int)point_x[(i+1)%60];

minute_b=(int)point_y[(i+1)%60];

g_minute.setColor(Color.BLUE);

g_minute.drawLine(0,0,minute_a,minute_b);

g_minute.drawString("分",minute_a,minute_b);

i++; second= 0;

}

}

if(Thread.currentThread()== tHour){

int h= hour%12;

hour_a=(int)point_x[h*5+ minute/12];

hour_b=(int)point_y[h*5+ minute/12];

int i= h*5+ minute/12;

g_hour.drawLine(0,0,hour_a,hour_b);

g_hour.drawString("时",hour_a,hour_b);

while(true){

//第一次过12-minute%12分钟就前进一个刻度,以后每过12分钟前进一个刻度

try{

tHour.sleep(1000*60*12- 1000*60*(minute%12)- second*1000);

minute= 0;

Color c= getBackground();

g_hour.setColor(c);

g_hour.drawLine(0,0,hour_a,hour_b);

g_hour.drawString("时",hour_a,hour_b);

}

catch(InterruptedException e){

return;

}

hour_a=(int)point_x[(i+1)%60];

hour_b=(int)point_y[(i+1)%60];

g_hour.setColor(Color.CYAN);

g_hour.drawLine(0,0,hour_a,hour_b);

g_hour.drawString("时",hour_a,hour_b);

i++;minute= 0;

}

}

}

}

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

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

}

}

}

}

java启用一个倒计时任务

你看一下这个吧.用线程来检查超时时间.

----------------------------------------------------------------------

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JTextField;

import javax.swing.JButton;

import javax.swing.SwingConstants;

public class DemoApp extends JFrame implements ActionListener, Runnable{

private JTextField textField;

private int seconds= 0;

//默认超时时间是10秒

private int time= 10;

private JLabel showTime;

private JButton btnStart;

public DemoApp(){

getContentPane().setLayout(null);

JLabel label= new JLabel("设置时间");

label.setBounds(10, 10, 64, 15);

getContentPane().add(label);

textField= new JTextField();

textField.setBounds(84, 7, 35, 21);

getContentPane().add(textField);

textField.setColumns(10);

JLabel label_1= new JLabel("秒");

label_1.setBounds(129, 10, 25, 15);

getContentPane().add(label_1);

btnStart= new JButton("开始");

btnStart.setBounds(164, 6, 64, 23);

btnStart.addActionListener(this);

btnStart.setActionCommand("S");

getContentPane().add(btnStart);

JLabel label_2= new JLabel("计时");

label_2.setBounds(10, 38, 54, 15);

getContentPane().add(label_2);

showTime= new JLabel("0");

showTime.setHorizontalAlignment(SwingConstants.RIGHT);

showTime.setBounds(84, 38, 35, 15);

getContentPane().add(showTime);

JButton button= new JButton("模拟使用连接");

button.setBounds(168, 39, 116, 23);

button.addActionListener(this);

button.setActionCommand("M");

getContentPane().add(button);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setResizable(false);

setSize(300, 150);

setLocationRelativeTo(null);

setVisible(true);

}

public static void main(String[] args){

new DemoApp();

}

public void actionPerformed(ActionEvent e){

if("S".equals(e.getActionCommand())){

try{

time= Integer.parseInt(textField.getText());

} catch(Exception ex){

}

new Thread(this).start();

//按钮不可用。

btnStart.setEnabled(false);

textField.setEditable(false);

}

if("M".equals(e.getActionCommand())){

seconds= 0;

}

}

public void run(){

while(true){

try{

showTime.setText(""+ seconds);

//检查是否超时

if(seconds== time){

//超时后可重新设置时间

btnStart.setEnabled(true);

textField.setEditable(true);

break;

}

seconds++;

//休眠时间设为一秒,如果总的超时时间很长的话,可以多设置一些

//比如30秒超时,可以设置为5秒一检查

Thread.sleep(1000);

} catch(Exception e){

}

}

}

}

关于java什么是倒计时的内容到此结束,希望对大家有所帮助。

情定三生结局 情定三生结局知夏爱谁java的对象是什么 什么是Java中的对象