Constructors with side effects freak me out, but at least be honest.

Nothing ever cares about the returned new object, so make a variable
outside the block to assign to and then not use.
Make a subclass instead of copying & pasting code.
Unused imports
Add an Icon type and use that instead of Image on TextWidgets.

Increases frilliness, but sometimes you really need something
fancier than just an Image for your icon. Now you can
swing that, and fallback to ImageIcon as a wrapper for
the simple case.
Add in constructors that take Images.

Should make this a painless upgrade for anything that
wasn't going in after the fact to change the icon on
something.

I'm slightly torn on whether it's appropriate to mark these
as deprecated; using an Image for an Icon is a pretty
common case as evidenced by it being the ONLY case until
now...