23

我可能在过去的两个小时里浏览和阅读了这些方法和 Graphics 类,也许我很愚蠢,哈哈,但我只是不理解它们。它们是干什么用的?我知道他们应该在屏幕上重绘或更新组件,但我从来不明白为什么需要这样做(我是新手)。例如,如果我在屏幕上移动 JLabel,调用 setLocation() 就可以很好地移动它。这是不需要 repaint() 的场景吗?它在哪些情况下有用,为什么?

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

4

3 回答 3

24

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

画():

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

重绘():

此方法不能被覆盖。它控制 update() -> paint() 循环。您应该调用此方法来让组件重新绘制自身。如果您对组件的外观做了任何更改,但没有更改其大小(例如更改颜色、动画等),请调用此方法。

于 2012-05-26T18:13:27.743 回答
5

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

repaint()方法用于导致paint()被 AWT 绘制线程调用。

于 2012-09-09T14:16:13.030 回答
0

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

于 2012-05-26T18:12:30.320 回答