paint()和repaint()之间的区别

时间:2014-03-19 09:39:40

标签: java swing

我是一名新手Java程序员,我发现在确定paint()repaint()方法功能之间的实际差异时遇到了一些困难。 在我研究的一些程序中,我发现paint()repaint()可以互换。 有人可以解释一下这个区别吗?谢谢

4 个答案:

答案 0 :(得分:6)

假设您指的是void paint(Graphics g)类中声明的Component方法:

只要需要绘制(部分)组件,就会自动调用此paint方法。例如,当窗口被另一个窗口阻挡然后再次可见时:窗口管理器将确定这一点,并在顶层组件(例如框架)上调用paint,此调用将逐渐显示实际"底部"组件(例如Button)。传递给此方法的Graphics对象由Window管理器提供,并且对应于屏幕上应该绘制组件的区域。 (此Graphics对象仅在paint方法中有效。

与此相反,repaint()只是触发一个新的绘画过程。它告诉系统:"请尽快致电paint此组件"。您可以手动调用此方法。您可以轻松地调用它:repaint的调用是合并。这意味着当您在短时间内向repaint发出许多次来电时,可能会对这些来电进行汇总,最终可能只会触发一次来电{ {1}}。

答案 1 :(得分:2)

不应该像javadoc那样直接调用paint方法:

  

由Swing调用以绘制组件。应用程序不应该调用   直接绘画,但应该使用重绘方法来安排   重绘的组件。

如果要重新绘制(重绘)组件,则应使用repaint方法。 javadoc还引用了以下文档:Painting in AWT and Swing

答案 2 :(得分:0)

paint()在运行时自动调用。如果您想(再次)手动拨打paint(),则会使用repaint()

答案 3 :(得分:0)

paint()方法包含绘制特定组件的说明。

无法覆盖的 repaint()方法更具体:它控制update()到paint()进程。如果您希望组件重新绘制自身或更改其外观(但不是大小),则应调用此方法。