我是一名新手Java程序员,我发现在确定paint()
和repaint()
方法功能之间的实际差异时遇到了一些困难。
在我研究的一些程序中,我发现paint()
和repaint()
可以互换。
有人可以解释一下这个区别吗?谢谢
答案 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()进程。如果您希望组件重新绘制自身或更改其外观(但不是大小),则应调用此方法。