14

我已经尝试过这方面的教程,但我仍然不太明白。基本上我的问题是哪种方法更好,为什么?我应该使用paintorpaintComponent吗?

请尽量保持答案简单,谢谢。

4

2 回答 2

17

paint()从方法的文档中引用

该方法实际上将绘画工作委托给了三个受保护的方法:paintComponent、paintBorder 和paintChildren。... 只想专门化 UI(外观和感觉)委托的绘制方法的子类应该重写paintComponent。

看起来该paint()方法实际上绘制了组件,包括边框和子项。如果您只想自定义组件的外观,不包括边框和子项,则使用paintComponent().

http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html#paint(java.awt.Graphics)

于 2013-02-27T03:39:03.150 回答
10

一般来说,在 Swing 中绘制时,建议覆盖paintComponent.

有很多原因,其中一个是paintComponent在底层绘制,这意味着您不会意外擦除在绘制过程中渲染的任何组件 - 这种情况经常发生在在这里发帖的人身上。

有很多次你可能需要覆盖paint,但我总是鼓励你先尝试让它工作paintComponent

查看

于 2013-02-27T03:48:07.593 回答