code: protected final void close() {
  		if (SwingUtilities.isEventDispatchThread()) {
  			closeIntern();
  		} else {
  			try {
  				SwingUtilities.invokeAndWait(new Runnable() {
  					public void run() {
  						closeIntern();
  					}
  				});
  			} catch (final Exception ex) {
  				ignore();
  			}
  		}
  	}
docs: Close the frame and free all resources. After calling "close" the monitor
  object cannot be used again!If called outside the EDT this method will
  switch to the UI thread using
  <code>SwingUtilities.invokeAndWait(Runnable)</code>.