Get a Hold of Swing Defaults

Get a Hold of Swing Defaults

Swing is one of the best things that happened to Java GUI developers. At the heart of Swing is the javax.swing.UIManager class ( for Swing 1.03 and below) that keeps track of the current look and feel and its defaults at three levels: user defaults, look and feel defaults, and system defaults. A call to javax.swing.UIManager.getDefaults() will return an instance of the javax.swing.UIDefaults class, which is an extension of java.util.Hashtable containing the defaults for Swing components. With a few lines of code, you can print out all the keys that represent all the settings for Swing components along with their default values:

 public void outputSwingDefs(){        String lineSep = System.getProperty("line.separator");        javax.swing.UIDefaults uid =        javax.swing.UIManager.getDefaults();        java.util.Enumeration uidKeys = uid.keys(); buff = null; fr=null;              try        {                    fr = new"swing_defaults.txt", true);            buff = new;                  while (uidKeys.hasMoreElements())            {                Object aKey = uidKeys.nextElement();                Object aValue = uid.get(aKey);                String str = "KEY: "+aKey+", VALUE: "+aValue+lineSep;                buff.write(str, 0, str.length());            }      }       catch( ioe)      {         //deal with exception      }      finally      {      	try  	{   	    buff.flush();        	    buff.close();        	    fr.close();      	}      	catch(Exception e)      	{         	     //deal with exception      	}      }   }

The output will be a text file called “swing_defaults.txt” in the current directory.In that file, you will see lines like:

 KEY: Tree.textBackground, VALUE:javax.swing.plaf.ColorUIResource[r=255,g=255,b=255]

indicating that tree’s text background has RGB value set of (255, 255, 255), or:

 KEY: ScrollBar.width, VALUE: 17

indicating that ScrollBar has a default width of 17 pixels.


Share the Post: