Решение из моего комментария:
Перемещение m.setVisible(true);
в конце.
Еще один комментарий от Йенс Шаудер :
Ваш код также должен работать в EDT. Все остальное просит
Проблема
Может быть, он хочет сказать что-то вроде этого:
Все, что касается компонентов Swing, включая конструкцию , должно выполняться в EDT . Если этого не произойдет, он сломан, хотя вы можете этого не заметить.
Для этого вы можете переместить свою логику из основного метода в конструктор класса и вызвать конструктор следующим образом:
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new Main();
}
});
}
Вы также можете написать логику в другом методе, кроме конструктора.