Foo がラベルやボタンなどの他のグラフィックスとオーバーラップしてはならない場合は、必ず自分自身を描画する必要があります。JComponent を拡張し、paintComponent() を実装し、LayoutManager などを使用して追加することをお勧めします。
Foo が他のグラフィックスとオーバーラップできる場合 (たとえば、宇宙ゲームで、ポリゴンが地球に向かって急速に移動する小惑星である場合)、事態はさらに複雑になります。Foo が自分自身を Graphics に描画する方法を知っているのが最善だと思いますが、JComponent を拡張したくない場合があります。
オプション 1: JComponent を拡張し、paintComponent を実装します。ただし、これは「実際の」JComponent ではなく、LayoutManager を使用して追加されないことに注意してください。これを防ぐために addNotify() を変更して例外をスローすることもできます。
オプション 2: Foo に Icon を実装させる - 軽量な描画のための素敵な小さなインターフェイス。
これはまだ疑問を投げかけています。それ自体を描画するには、別の何かがそれを伝える必要があります。したがって、これらの JComponents または Icons のリストを保持し、それらに描画するように指示する必要があります...