Ошибка загрузки Java JFrame после цикла

Это мой основной метод, с помощью которого я запускаю свое приложение. JFrame загружается успешно. Когда я добавляю часть WHILE-Loop, чтобы выполнить некоторую фоновую работу, когда я работаю с некоторыми данными, чтобы показать их в моем JFrame, мой JFrame загружается неправильно (см. изображение ниже).

public static void main(String[] args) throws IOException  {

        if (Config.checkIfConfigExists() == true) {

            /*
             * Starten der Anwendung
             */
            EventQueue.invokeLater(new Runnable() {
                public void run() {
                    try {

                        Main window = new Main();

                        window.frmServicenowHelper.invalidate();
                        window.frmServicenowHelper.validate();
                        window.frmServicenowHelper.repaint();

                        window.frmServicenowHelper.setVisible(true);

                        while (true) {

                            // the part that makes it error

                        }



                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });

        } else {

            Notifications.alertMSGConfig("Config not found. Create one?");

        }   
    }

Как вы можете видеть, JFrame зависает и показывает свой фон.

Ошибка загрузки JFrame

Я обнаружил, что это как-то связано с Threads и правильной обработкой (я думаю, что использую что-то не в том месте), но я не могу исправить это самостоятельно.

Основные знания:

Я хочу получить JSON-String из URL-адреса (методы для этого работают - я хочу вызывать и показывать результаты в кадре) каждые 5 минут (поэтому цикл while).

ИЗМЕНИТЬ:

Я попробовал это, которое правильно загружает кадр, но делает цикл (который мне нужен) бесполезным:

while (true) {

                            Main window = new Main();

                            window.frmServicenowHelper.invalidate();
                            window.frmServicenowHelper.validate();
                            window.frmServicenowHelper.repaint();

                            window.frmServicenowHelper.setVisible(true);

                            break;


                        }

person piguy    schedule 27.02.2017    source источник
comment
Вы спите какое-то время перед перекрашиванием? Вы уверены, что в JFrame не работает более одного потока?   -  person Alex Baranowski    schedule 27.02.2017
comment
@AlexBaranowski Я никогда не сплю - я совершенно уверен, что это только один поток. Добавление break; заставляет его работать, но делает цикл бесполезным, который мне нужен   -  person piguy    schedule 27.02.2017


Ответы (1)


Я нашел решение:

Я просто создал новый поток (фоновая обработка), используя:

public static void main(String[] args) {

     Runnable r = new Runnable() {
         public void run() {
             runYourBackgroundTaskHere();
         }
     };

     new Thread(r).start();
     //this line will execute immediately, not waiting for your task to complete
}

Источник: Создание потоков в java для запуска в фоновом режиме

person piguy    schedule 27.02.2017