---------------------------
Version imprimable
---------------------------
Il faut LIRE, LIRE, LIRE, des tutoriaux. Ex : Programmation Java pour les enfants, les parents et les grands-parents. (oui, je sais, vous n'êtes ni un enfant, ni un parent et ni un grand-parent... alors allons-y pour les pros : Creating a GUI with JFC/Swing).
Oui, c'est parce que la méthode paintComponent se déclenche depuis la mécanique swing (sauf cas particulier il ne faut pas l'appeler directement) lorsque il est nécessaire de dessiner ce composant, donc en particulier lorsque la taille de la fenêtre se modifie. Elle ne sait pas qu'il faut le redessiner après un appui bouton, il faut le lui dire, par exemple avec la méthode revalidate().
Pour ton cas je ne suis pas sûr que ce soit suffisant, il faudrait voir le reste de ton code ; en tous les cas je te suggère une autre voie que de rajouter des panneaux, qui est de chercher une abstraction de ce que tu souhaites montrer pour en faire un modèle.
Ici, par exemple, ce pourrait être un simple booléen à false avant que tu aies cliqué, à true après ; et, dans le paintComponent, tu réagis en fonction de ce booléen ; et, dans la réaction du bouton, tu places ce booléen à vrai et tu lances un revalidate.