我想在JPanel 上做一个JLabel来控制时间
可是在Sleep1000后该怎么写才能使时间动起来啊
是不是一定要用Graphics
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.util.Date;import javax.swing.JLabel;
import javax.swing.JPanel;public class Clock extends JPanel implements Runnable{
Date data=new Date();
String str="";
JLabel clock=new JLabel();
  public Clock(){
  clock.setBackground(Color.BLUE);
  clock.setLayout(null);
str=data.toLocaleString();
clock.setText(str);
this.add(clock);

 
    
}  
public void run() {
 try {
Thread.sleep(1000);
} catch (InterruptedException e) {

e.printStackTrace();
}
 

}



}

解决方案 »

  1.   

    用JLabel本身的setText(String text)方法把格式化好的时间显示出来就可以了时间显示最好用定时器来完成
      

  2.   

    定时器就是
    javax.swing.Timer
      

  3.   

    用本身的setText(String)方法
    另外,设置语句要放在单独的线程里,不然会卡原始线程的
      

  4.   

    JLabel clock=new JLabel();
    while(true)
    {
    Calendar c=Calendar.getInstance();
    nf.setMinimumIntegerDigits(2);
    String str=nf.format(c.get(Calendar.HOUR_OF_DAY))+":"
              +nf.format(c.get(Calendar.MINUTE))+":"
              +nf.format(c.get(Calendar.SECOND));
    clock.setText(str);
        try{
         Thread.sleep(1000);
        }catch(InterruptedException ex){}
    }这样就可以的啊
      

  5.   

    JLabel clock=new JLabel();
    while(true)
    {
    Calendar c=Calendar.getInstance();
                      NumberFormat nf = NumberFormat.getInstance();
    nf.setMinimumIntegerDigits(2);
    String str=nf.format(c.get(Calendar.HOUR_OF_DAY))+":"
              +nf.format(c.get(Calendar.MINUTE))+":"
              +nf.format(c.get(Calendar.SECOND));
    clock.setText(str);
        try{
         Thread.sleep(1000);
        }catch(InterruptedException ex){}
    }
    刚才打少了一条语句了