用线程实现时钟的问题
大家好,我想做一个时钟,想让它能显示当前的时间,并随着时间而走动,但我做出来以后发现它只会显示运行那一刻的时间,不会走,调试了很长时间都不行,恳请各路大侠支招,不胜感激。期待各位的回复...
以下是我的代码:(文件名:ShowTime.java)
import java.util.*;
import java.awt.*;
import java.awt.event.*;
@SuppressWarnings("serial")
public class ShowTime extends Frame implements Runnable,ActionListener{
protected Calendar d=Calendar.getInstance();
Label l1,l2,l3,l4,l5,l6,l7;
TextField t1,t2,t3,t4,t5,t6,t7;
Thread trd;
String year,mon,day,hour,min,sec,msec;
ShowTime(){
super("Super Clock");
setVisible(true);
setLayout(new GridLayout(7,2));
setBackground(Color.green);
l1=new Label("年");
l2=new Label("月");
l3=new Label("日");
l4=new Label("时");
l5=new Label("分");
l6=new Label("秒");
l7=new Label("毫秒");
t1=new TextField("",4);
t2=new TextField("",4);
t3=new TextField("",4);
t4=new TextField("",4);
t5=new TextField("",4);
t6=new TextField("",4);
t7=new TextField("",4);
add(l1);add(t1);add(l2);add(t2);add(l3);add(t3);add(l4);add(t4);
add(l5);add(t5);add(l6);add(t6);add(l7);add(t7);
pack();
trd=new Thread(this);
trd.start();
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){System.exit(0);}});
}
//@SuppressWarnings("deprecation")
public synchronized void run(){
while(true){
year=Integer.toString(d.get(Calendar.YEAR));
mon=Integer.toString(d.get(Calendar.MONTH)+1);
day=Integer.toString(d.get(Calendar.DAY_OF_MONTH));
hour=Integer.toString(d.get(Calendar.HOUR_OF_DAY));
min=Integer.toString(d.get(Calendar.MINUTE));
sec=Integer.toString(d.get(Calendar.SECOND));
msec=Long.toString(d.get(Calendar.MILLISECOND)%1000);
t1.setText(year);
t2.setText(mon);
t3.setText(day);
t4.setText(hour);
t5.setText(min);
t6.setText(sec);
t7.setText(msec);
try{Thread.sleep(1);}
catch(InterruptedException e){}
}
}
public void actionPerformed(ActionEvent e){
}
public static void main(String []args){
ShowTime frm=new ShowTime();
}
}