Well you could create your own renderer for icons, just like last time.
Actually, I think the default renderer for Icons does use either table.getBackground() or table.getSelectionBackground() for its background, so calling table.getBackground() might work if it wouldn't have any other negative effects.
It seems like I have to override the paint method in ImageIcon maybe???
Overriding your Icon's paint() method won't do anything (except perhaps for the color under the transparent parts of your Icon, if it has any) because that's not where the cell area outside of the Icon gets painted.
Well actually, the Graphics object passed to Icon.paint() usually isn't clipped, so it is generally possible to paint outside the Icon's region from that method. But doing so would be a hack. Better, I think, to handle the cell background in your table cell renderers.