кажется, что он игнорирует метод запуска фрейма
Ну, конечно, так и есть.Вы создали экземпляр анонимного подкласса Thread
, чей метод run()
не делает ничего, кроме как создает экземпляр Cadre
через конструктор по умолчанию.Ничто из этого не приведет к запуску нового метода Cadre
run()
.
Вместо этого вы можете создать экземпляр Thread()
через конструктор, который принимает Runnable
:
new Thread(new Cadre()).start();
... но это кажется довольно бессмысленным.
Имейте в виду, в частности, что сам Swing выполняет всю свою работу в еще одном потоке, "потоке обработки событий", и чтоSwing и стандартные компоненты Swing не являются поточно-ориентированными.
Лучше тогда будет
SwingUtilities.invokeAndWait(new Cadre());
(или invokeLater(new Cadre())
), но это вызовет Cadre
's run()
метод для запуска в потоке Event-Dispatch, а не в каком-либо другом потоке по вашему выбору.Фактически, это, вероятно, то, что должен сделать, так как рассматриваемый метод создает и отображает графический интерфейс Swing, но это не то, что, как вам кажется, вы хотите сделать .