我想在一JPanel上画出一实时显示当前时间的字符串,用一线程画字符串,
代码如下:
   class SimplePanel1 extends JPanel
{
SimpleDateFormat formatter;
java.util.Date currentDate;
String lastdate;
SimplePanel1()
{
    super();
    formatter=new SimpleDateFormat("EEE MMM dd hh:mm:ss yyyy",Locale.getDefault());       
}

class DrawRunner implements Runnable
{
Graphics g;
DrawRunner(Graphics g)
{
this.g=g;
}
public void run()
{
 while(true)
{
          currentDate =new java.util.Date();
 lastdate=formatter.format(currentDate);
          g.drawString(lastdate,5,20);          
          currentDate=null;
          try
          {
           Thread.sleep(300);
          } 
          catch(InterruptedException e){}
}
}
}public void paintComponent(Graphics g)
  {
    super.paintComponent(g);
     DrawRunner drawrunner=new DrawRunner(g);
        Thread DrawThread=new Thread(drawrunner);
        DrawThread.start();  
  }
}为什么Jpanel上的字符不会自动刷新,而且有时切换界面后字符串会消失呢?
请各位帮忙看看,是否还有其他方法实现?谢谢

解决方案 »

  1.   

    import java.awt.Graphics;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Locale;import javax.swing.JPanel;class SimplePanel1 extends JPanel {
    SimpleDateFormat formatter; SimplePanel1() {
    super();
    formatter = new SimpleDateFormat("EEE MMM dd hh:mm:ss yyyy", Locale.getDefault()); DrawRunner drawrunner = new DrawRunner();
    Thread DrawThread = new Thread(drawrunner);
    DrawThread.start();
    } class DrawRunner implements Runnable {
    public void run() {
    while (true) {
    try {
    Thread.sleep(300);
    repaint();
    } catch (InterruptedException e) {
    }
    }
    }
    } public void paintComponent(Graphics g) {
    super.paintComponent(g);
    Date currentDate = new java.util.Date();
    String dateString = formatter.format(currentDate);
    g.drawString(dateString, 5, 20);
    }
    }