我们覆盖像这样的绘画方法
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();
}
为什么我们不能称之为油漆(Graphics g)
而不是repaint()
?
答案 0 :(得分:14)
你应该尝试一下。你会注意到
Graphics
对象g
。paint
不是最佳做法,因为它会导致该方法的主体立即在GUI线程上执行,因此在{{1}之前不能再处理任何事件}返回。 OTOH,paint
计划在将来的某个方便点发生绘制事件,并且不会使GUI看起来挂起。当然,在你的情况下,repaint
并不是非常慢,但总的来说...... Here is the classic article on painting,来自Java人员自己。
答案 1 :(得分:9)
调用repaint()不一定会立即调用paint()。它要求安排呼叫。
通常应该调用重绘而不是绘制,以便GUI框架可以正确地重新安排重新绘制。它会做一些事情,比如确保在正确的线程上调用paint,并且如果它们在框架到处进行实际绘制之前发生,则有机会将多个调用合并到重绘中。
调用重绘会更加健壮。