Asserting Control Over the GUI: Commands, Defaults, and Resource Bundles This article is about defining Swing application behavior. It's about combining low-level J2SE primitives, like Actions, ResourceBundles, and UIDefaults, in a way that's appropriate for moderately large desktop Java applications. The article begins with a review of event handling, Swing actions, and conventional approaches for defining them. The second half of the article demonstrates how one can separate an Action's visual properties into a ResourceBundle that's loaded through Swing's UIDefaults API. In addition to enabling localization, this approach shifts some of the GUI from code to a declarative representation. That's an advantage for large applications, because the declarative aspect of the application can be developed independently from the code...