Mac specific properties for Swing applications

I think I've mentioned parts of this in other blog entries, but as I was just digging through a Java Swing application that I wrote specifically for the MacOS platform, I ran across the following source code, which sets up all of my system properties for the Mac environment:

try
{
  // set the brushed metal look and feel, if desired
  System.setProperty("apple.awt.brushMetalLook", "true");
  
  // use the mac system menu bar
  System.setProperty("apple.laf.useScreenMenuBar", "true");
  
  // set the "About" menu item name
  System.setProperty("com.apple.mrj.application.apple.menu.about.name", "WikiStar");
  
  // use smoother fonts
  System.setProperty("apple.awt.textantialiasing", "true");

  // ref: http://developer.apple.com/releasenotes/Java/Java142RNTiger/1_NewFeatures/chapter_2_section_3.html
  System.setProperty("apple.awt.graphics.EnableQ2DX","true");
  
  // use the system look and feel
  UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e)
{
  // put your debug code here ...
}

You can find a discussion of several of these property settings on this Apple technical note.

Make these calls early

It's important to note that I make all of these calls almost immediately in the main controller of my Java/Swing application, because most of them (possibly all of them, I can't remember for sure) have to be set before you start creating any Swing components. I've found that these simple settings go a long way towards making my application look and feel more like a native Mac application.