Alternatively, you could create your own Icon implementation and set that as the default using UIManager.put(...). If you're in need of inspiration, read the source of javax.swing.plaf.metal.MetalIconFactory.RadioButtonIcon / CheckBoxIcon.
Not sure which method you're referring to as
There are no new questions, but there may be new answers.
1. If you've created so many Icons to substitute the single Icon in MetalIconFactory, it looks like you've missed the point that one of the parameters to the Icon method paintIcon(...) is the Component to which the Icon is to be painted.
2. If customize the LaF using UIManager.put(...) you shouldn't need to invoke setIcon(...) at all.