Si le Foo ne doit jamais se chevaucher avec d'autres graphiques, par exemple c'est une étiquette ou un bouton, alors il devrait définitivement se dessiner. Je suggère de proroger JComponent, mettre en œuvre paintComponent(), et être ajouté à l'aide d'un LayoutManager etc., etc.
Si le Foo peut se chevaucher avec d'autres graphiques (par exemple, il est un jeu d'espace et le polygone est un mouvement rapide en-tête d'astéroïdes vers la terre) alors les choses deviennent plus délicates. Je pense toujours que si le Foo sait comment dessiner un graphique, mais vous ne voulez pas étendre JComponent.
option 1: étendez JComponent et implémentez paintComponent, mais notez dans les javadocs qu'il ne s'agit pas d'un composant "réel" JComponent et qu'il n'est jamais ajouté à l'aide d'un LayoutManager. Vous pouvez même modifier addNotify() pour lancer une exception pour empêcher cela.
Option 2: avoir l'icône de l'outil Foo - une jolie petite interface pour les dessins légers.
Cela pose encore la question, quelque chose sinon doit lui dire de dessiner lui-même. Donc, quelque chose doit garder une liste de ces JComponents ou Icônes et leur dire de dessiner ...
Qu'est-ce que la classe Foo est censée faire? – Swapnil
Je suis en train de faire des astéroïdes et j'ai presque tout fait, mais l'affichage réel. Foo serait un astéroïde, mais pour la question, je pensais que c'était un peu hors de propos? –
Ok. "le faire dessiner lui-même" n'est pas vraiment l'encapsulation, mais http://en.wikipedia.org/wiki/Single_responsibility_principle à moi. – Swapnil