paint()和paintcomponent()之间的区别?

Boo*_*gly 12 java swing paint paintcomponent

我已经尝试过这方面的教程,但我仍然不太了解它.基本上我的问题是哪种方法更好,为什么?我应该使用paintpaintComponent

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

小智 14

引用paint()方法文档

此方法实际上将绘制工作委托给三个受保护的方法:paintComponent,paintBorder和paintChildren....只想专门化UI(外观)委托的paint方法的子类应该只覆盖paintComponent.

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

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


Mad*_*mer 9

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

有很多原因,一个是paintComponent在底层绘制的,这意味着你不会意外擦除在绘制过程中渲染的任何组件 - 这对发布在这里的人来说会发生很多.

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

查看

  • 如果从双缓冲的角度覆盖paint()或paintComponent(),我认为这并不重要.请参阅"AWT和Swing中的绘画"一文中的双缓冲部分.现在,如果您碰巧在帧级别(我从不推荐)覆盖paint()并忘记调用super.paint(),那么您可能会遇到麻烦. (2认同)