Ma il punto è come hai fatto il custom painting nel JPanel. Dovresti chiaramente estendere JPanel e fare un override (possibilmente mantenendolo protected) del void paintComponent(Graphics)
E il JButton deve essere contenuto in JPanel.
Se hai fatto diversamente ... dipende, bisogna vedere ... potrebbe essere inappropriato.
P.S. puoi vedere il mio Custom Backgrounds