Everything involving Swing should be done on the Event Dispatching Thread, or EDT. Check out the invoke methods of the SwingUtilities class. SwingUtilities (Java Platform SE 7 )