gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 03:58:57 24 4
gpt4 key购买 nike

我们像这样覆盖 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()

最佳答案

您或许应该尝试一下。你会注意到

  1. 您必须以某种方式获取Graphics 对象g
  2. 在事件处理程序的主体中调用 paint 不是最佳实践,因为它会导致该方法的主体立即在 GUI 线程上执行,因此在 paint 返回。 OTOH,repaint 安排一个绘制事件在将来某个方便的时间点发生,并且不会使 GUI 看起来挂起。当然,在您的情况下,drawString 并不是特别慢,但总的来说....

Here is the classic article on painting ,来自 Java 人员本身。

关于java - 为什么调用 "repaint()"而不是在Applet中直接调用 "paint(..)"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11838603/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com