How do I set an Application's Icon Globally in Swing?

java, swing

Solution

You can make the root form (by which I assume you mean `JFrame`) be your own subclass of `JFrame`, and put standard functionality in its constructor, such as:

this.setIconImage(STANDARD_ICON);

You can bundle other standard stuff in here too, such as memorizing the frame's window metrics as a user preference, managing splash panes, etc.

Any new frames spawned by this one would also be instances of this `JFrame` subclass. The only thing you have to remember is to instantiate your subclass, instead of `JFrame`. I don't think there's any substitute for remembering to do this, but at least now it's a matter of remembering a subclass instead of a `setIconImage` call (among possibly other features).

Problem

I know I can specify one for each form, or for the root form and then it'll cascade through to all of the children forms, but I'd like to have a way of overriding the default Java Coffee Cup for all forms even those I might forget. Any suggestions?

Original source