Just go with one drawing / container panel for everything.
Consider a tile based game. Using your second solution, each tile will be an object, memory will grow rapidly, and the game will slow down when scanned.
Using the first option, you are flexible. You draw what you want, you have the panel coordinates, so everything is relative to this. Using the tile-based example, you know the height and width of the panel, draw a square and increase the X and Y coordinates as needed.
Graphical GUIs such as Swing or .NET Winforms are expensive because they have many other things that the game will not need. Therefore, to answer your question, go with option one, instead of using the panel for each check on your board.
One of the nice solutions for using the second method in combination with the first method is the Weighted Design Template . You can still use OO objects, but you will have a fraction of the amount that you usually make. Check this.
source share