そもそも何故java.awt.ComponentにPaintListenerが無いんだぜ?
void paint(Graphics g)なりpaintComponent の中で自前の部品を使って描画する時に、
gに紐付いたComponentのサイズや他の情報にアクセスする時に、
結局部品のコンストラクタなりでComponentを渡してやる必要がでてくるだろ。
ListenerでPaintEventさえもらえればそんに手間も要らなくなるし、
gと部品が受け取ったComponentとの不一致の可能性もなくなる訳だし。

1.7では軽量・重量コンポーネントの混在も可能になったりしてるし、
gがComponentと紐付いていないパターン(ただのImageとか)でも判断できるように作れる筈なんだけどな。

JLayerだっけ?あんなの利用させられるくらいなら、この方が楽だろ。