2016-04-24 3 views
0

У меня есть бесконечный цикл while, ожидающий события в SwingUtilities.invokeLater с интерфейсом Runnable, но выполнение не продолжается ... почему?SwingUtilities.invokeLater с бесконечным циклом, не продолжающимся?

//here hello3 prints in cmd but hello2 will not execute 
System.out.println("hello3"); 

//showMessage(); 
SwingUtilities.invokeLater(
    new Runnable(){ 
     public void run() { 
      while(true) { 
       jEditorPane1.setText(s9); 
      } 
     } 
    } 
); 

System.out.println("hello2"); 
+0

Начать с [Concurrency in Swing] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/). Вы блокируете EDT. 'invokeLater' запускает метод' run' 'Runnable' на EDT в какой-то момент в будущем – MadProgrammer

ответ

3

SwingUtilities.invokeLater выполнит метод запуска внутри потока диспетчеризации событий.

Если весь код, который вы показываете нам, выполняется в потоке диспетчеризации событий (если он выполняется, например, в экземпляре actionListener), поток становится «замороженным» внутри бесконечного цикла.

+0

no его нет в любом обработчике im, используя форму netbeans для создания gui, но генерируя весь код gui в одном swingutilities.invokelater, но im создавая другой метод, который включает этот код в этот класс, который я вызову с помощью объекта, созданного из этого класса – Theon

+0

'Forum_main fm = new Forum_main(); fm.setVisible (true); fm.getdata (uid, tid); близко(); ' – Theon

+0

Ithe класс вызов выглядит так – Theon