Java中的paint()和repaint()

时间:2012-05-26 18:06:56

标签: java paint repaint

我花了最近两个小时浏览和阅读这些方法和Graphics类,也许我很蠢,哈哈,但我只是不理解它们。它们适用于什么?我知道他们应该在屏幕上重绘或更新组件,但我从未理解为什么这是必需的(我是新手)。例如,如果我在屏幕上移动JLabel,则调用setLocation()会将其移动得很好。这是不需要repaint()的场景吗?在哪些情况下它有用,为什么?

如果您认为这是一个可以使用搜索功能解决的问题,请道歉,但无论出于何种原因,我都没有得到它。

3 个答案:

答案 0 :(得分:21)

Paint()和Repaint()方法之间的区别

油漆():

此方法包含绘制此组件的说明。实际上,在Swing中,你应该改变paintComponent()而不是paint(),因为paint调用paintBorder(),paintComponent()和paintChildren()。你不应该直接调用这个方法,你应该调用repaint()。

重画():

无法覆盖此方法。它控制update() - > paint()循环。您应该调用此方法来获取重新绘制自身的组件。如果您已经做了任何事情来改变组件的外观,而不是它的大小(比如更改颜色,动画等),那么请调用此方法。

答案 1 :(得分:4)

paint()方法支持通过Graphics对象进行绘制。

repaint()方法用于使AWT绘制线程调用paint()

答案 2 :(得分:0)

除非您需要在组件上呈现特定内容,否则无需调用重绘。 “特定的东西”是指您正在使用的窗口工具包内部未提供的任何内容。