继承自 AWT 组件 (比方说 Canvas )的类别,必须 override 原有的 paint() 来提供自己的绘图方式。在 Swing 中,也可以这么做。但是,如果此组件是容器组件,且包含其它组件的话,你不能单单只是 override 此容器组件的 paint() 。请牢记: Swing 组件必须在父容器中绘出自己的外观,换句话说, Swing 容器必须负责绘出自身所包含的所有组件之外观。 overrided 的 paint() 应该要呼叫 super.paint() 来照料这些子组件。或者,你也可以不要 override paint() 而去 override paintComponent() 。 paint() 会呼叫到 paintComponent() 。 paintComponent() 的责任很单纯,就只是负责绘出组件。