日期:2014-05-20  浏览次数:20997 次

求教一个在JPanel面板上动态显示当前时间的问题,请高手帮下忙!
我在JPanel面板试这样实现的,是用定时器实现的,实现过程如下:
protected   void   paintComponent(Graphics   g)   {
          //   draw   the   current   time   as   the   text
        g.setColor(Color.BLACK);
        g.drawString(hour   +   ": "   +   minute   +   ": "   +   second,   10,   15);
}

定时器事件函数如下:
public   void   actionPerformed(ActionEvent   e)   {
        setCurrentTime();
        repaint();
}

我想实现动态显示时间   格式是这样的   23:27:01
可是我的运行的时候   比如说一开始为   20:27:01   后来为20:27:02   他们重叠了   。
我试着去擦除原来的数字,可是还是不行。请问如何来擦除原来的数字啊?或者有什么更好的解决方法?求大家帮下忙!谢谢!


------解决方案--------------------
在覆盖protected void paintComponent(Graphics g) 方法时请先调用super.paintComponent(g);
------解决方案--------------------
自己看看API 就知道了
------解决方案--------------------
晕,还在这讨论啊。你可以这么理解这个问题,不调用super.paintComponent(g)的话,rePaint()的时候就会把你写的paintComponent中的内容绘制上去。如果你调用super.paintComponent(g),那么就会把整个组件彻底清空,然后依次再绘制。所以你要是增量绘制就别写super.paintComponent(g)如果是新图,就写上super.paintComponent(g)。你要是要了解细节,其实只要去看看JPanel的源代码就知道了。