线程Thread实现界面定时提醒功能与时间显示

因为最近在做面向对象的实习,所以查阅了一些相关的资料搞出了点东西。


最开始是想怎样可以让他在不受控制的时候,就可以在后台显示时间,那方法也比较简单,分享给大家


import java.text.SimpleDateFormat;
import java.util.Date;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

public class Remind implements Runnable{
	JLabel jj;
	JFrame jFrame;
	String rtime=null;
	String thing;
	Remind(JLabel J1) {
		jj=J1;// TODO Auto-generated constructor stub
	}
	Remind(String f,JFrame Jf,String sj) {
		rtime=f;
		jFrame=Jf;
		thing=sj;
	}
	int time=0;
	SimpleDateFormat m=new SimpleDateFormat("hh:mm:ss");//从系统获取时间
	Date date;
	public void run(){
		while(true){
			date=new Date();
			System.out.println(m.format(date));
			jj.setText(m.format(date));
			if(rtime!=null){
				if(m.format(date).equals(rtime)){
				JOptionPane.showMessageDialog(jFrame, thing);
				return;
				}
			}
			time++;
			try{
				Thread.sleep(1000);
			}
			catch(InterruptedException e){
				
			}
			
		}
	}
}


定义了两周构造方法,第一种就是
Remind(JLabel J1)
选择一个JLabel,用来显示时间,线程运行后开始会获取系统时间,然后每隔1000毫秒(一秒)更新一次,大概效果就是这样


然后控制台也有相应输出。


第二种构造方法就是

Remind(String f,JFrame Jf,String sj) 
传入字符串f,也就是提醒的时间

JFrame Jf 提醒的窗口位置,从哪个窗口提醒,可以考虑写null

字符串sj是提示信息

到达f写的时间就会提醒,主要f的格式(小时:分钟:秒)


可以在主程序中这样来书写:

构造方法一:

 JLabel jl = new JLabel();// 注意类名别写错了。
       frame.getContentPane().add(jl);
       jl.setText("这是新窗口");
       Remind r1=new Remind(jl);
       Thread qThread=new Thread(r1);
       qThread.start();
构造方法二:

String time="08:00:00";
String remindMessage="Wake me up"
Remind r1=new Remind(time,null,remindMessage);
       Thread qThread=new Thread(r1);
       qThread.start();
希望能帮到大家~



你可能感兴趣的:(Java)