defaults = UIManager.getLookAndFeelDefaults();
  public static Border getButtonBorder()  {    UIDefaults defaults;    Border outer;    defaults = UIManager.getLookAndFeelDefaults();    /* The keys for UIDefaults have been determined by writing a     * test program that dumps the UIDefaults to stdout; that program     * was run on a JDK 1.4.1_01 for GNU/Linux. Note that in the API,     * the key "light" is usually called "highlight", and "highlight"     * is usually called "lightHighlight".     */    outer = new ButtonBorder(defaults.getColor("Button.shadow"),                             defaults.getColor("Button.darkShadow"),                             defaults.getColor("Button.light"),                             defaults.getColor("Button.highlight"));    /* While the inner border is shared between multiple buttons,     * we do not share the outer border because ButtonBorders store     * their border colors. We cannot guarantee that the colors     * (which come from UIDefaults) are unchanged between invocations     * of getButtonBorder. We could store the last colors, and share     * the button border if the colors are the same as in the last     * invocation, but it probably is not worth the effort.     */    return new BorderUIResource.CompoundBorderUIResource(      outer,      /* inner */ getMarginBorder());  }