At some point, anonymous inner classes move from "convenient" to vicious mess. You have passed this point.
Like Tim, I suggest you use AbstractAction. However, for the extension, create your own abstract subclass that can read its name, icon, description (for tooltips), etc. From the configuration file. This way you can internationalize the code, while others (marketing) can easily change the buttons from “Save” to “SuperSomethingTM” or something else. And a graphic artist can easily change the icon. Extend this class to the actual implementation.
One additional benefit of AbstractAction is that they can be disabled. So, if no changes are saved, you can easily disable the "Save" menu, the "Save" button and the "Save" icon on the toolbar.
There are various ways to store and read this configuration information. One of them is ResourceBundle.
(printed on my Nook, so it's on the short side, others are free to expand)
source share