- AWT, override
paint()
. - Swing top-level container (e.g.s are
JFrame
,JWindow
,JDialog
,JApplet
..), overridepaint()
. But there are a number of good reasons not to paint in a TLC. A subject for a separate question, perhaps. - The rest of Swing (any component that derives from
JComponent
), overridepaintComponent()
. - Neither override nor explicitly call
paintComponents()
, leave it to the API to call it when needed.
Be sure to also use @Override
notation whenever overriding a method.
Doing so would hint at the problem of trying to override paintComponent(..)
in a JFrame
(it has no such method), which is quite common to see.