SwingUtils
invokeNowOrLater
Invokes run immediately if this is the EDT; otherwise, the Runnable is invoked on the EDT using invokeLater.
run
Runnable
invokeLater