Use a SwingWorker as the threading system, or use SwingUtilties.invokeLater (or invokeAndWait) to update. Always update GUI components on the EDT unless the API states the method is thread safe.