Как избавиться от мерцания при открытии окна Java?
Главная ошибка состоит в том, что весь ваш код нужно обернуть:SwingUtilities.invokeLater(new Runnable() {
// TODO
})
Почитайте про EventDispatchThread в Swing'e.
И можно попробовать setDoubleBuffered(true);
Но запускать окно, конечно, надо в потоке обработки интерфейса.