Вызов позже возможен, даже если вы находитесь на EDT, однако это, безусловно, меняет время событий, поэтому вы должны быть уверены, что вы не зависели от последовательности кода здесь, когда вы были на EDT.При этом простой способ избежать забывания об остальном - обернуть вызов в служебный метод:
public static void invokeInDispatchThreadIfNeeded(Runnable runnable) {
if (EventQueue.isDispatchThread()) {
runnable.run();
} else {
SwingUtilities.invokeLater(runnable);
}
}
Таким образом, вы никогда не забудете else
.
Кроме того, вВообще в вашем idom повторение code x
- очень плохая идея, так как позже вы можете обнаружить, что вам нужно исправить или улучшить этот код, и вы будете делать это только в одном месте, оставляя ошибку в другом.