I'm still a noob when it comes to swing, but I noticed you're trying to add your button to the PaintSurface. I would think you should make the button on top of the pane but not inside PaintSurface. So you could add the button during init(). Or else maybe you're just drawing your entire ellipse over the button, so you never see it. And you don't have any actionlisteners yet, so you can't test to see if the button works anyhow.