Use Table Row Rendering concepts which is easier than dealing with individual renderers.
This approach only works for rendered cells. If you want to paint outside the bounds of the table, then you will need to override the paintComponent() method to add custom painting.