我们覆盖这样的paint方法
public void paint(Graphics g)
{
g.drawString(msg,xpos,ypos);
}
如果我们有另一种方法,可以说一个鼠标按下的事件方法
public void mousePressed(MouseEvent me)
{
xpos=me.getX(); // msg, xpos and ypos are variables of class
ypos= me.getY();
msg="You pressed mouse";
repaint();
}
为什么我们不能称为paint(Graphics g)而不是repaint()?
解决方法:
你应该尝试一下.你会注意到的
>你必须以某种方式得到Graphics对象.
>在事件处理程序的主体中调用绘制不是最佳实践,因为它会导致该方法的主体立即在GUI线程上执行,因此在paint返回之前不能再处理任何事件. OTOH,repaint计划在将来某个方便的点发生绘制事件,并且不会使GUI看起来挂起.当然,在你的情况下,drawString并不是非常慢,但总的来说….
Here is the classic article on painting,来自Java人自己.