So I added the solve button to a JPanel at the bottom part of the
screen.
The only issue is that in the button actionlistener, it doesn't tell
anything to repaint because it can't see anything that can repaint.
Easily fixable, though. A possible solution is to make the boolean (that
controls whether or not the component gets updated) data  in the Display
class rather than the PuzzleDrawingComponent class, and then set it to
true when you click the button.