java – 为什么调用“repaint()”而不是直接在Applet中调用“paint(..)”?

我们覆盖这样的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人自己.

上一篇:java – 使用separate_jvm在各个JVM中启动applet并不总是有效


下一篇:我可以在iPhone的网络浏览器上运行网页嵌入式Java Applet吗?