2016-04-24 9 views
0

Ich habe eine unendliche While-Schleife warten auf ein Ereignis in SwingUtilities.invokeLater mit Runnable Schnittstelle, aber die Ausführung wird nicht fortgesetzt ... warum?SwingUtilities.invokeLater mit Endlosschleife, nicht weiter?

//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

Beginnen Sie mit [Parallelität in Swing] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/). Du blockierst den EDT. 'invokeLater' führt die' run' Methode die 'Runnable' auf dem EDT zu einem bestimmten Zeitpunkt in der Zukunft aus. – MadProgrammer

Antwort

3

SwingUtilities.invokeLater wird die run-Methode innerhalb des Event-Dispatching-Threads ausführen.

Wenn der gesamte Code, den Sie uns zeigen, innerhalb des Ereignis-Dispatch-Threads ausgeführt wird (wenn er beispielsweise in einem actionListener ausgeführt wird), wird der Thread in der Endlosschleife "eingefroren".

+0

nein es ist in keinem Handler, der netbeans form benutzt, um das GUI zu entwerfen, sondern seinen gui Code in einem swingutilities.invokelater zu generieren Ich erstelle eine andere Methode, die diesen Code in dieser Klasse enthält, die ich unter Verwendung von Objekt aus dieser Klasse – Theon

+0

erstellen 'Forum_main fm = new Forum_main(); fm.setVisible (wahr); fm.getdata (uid, tid); close(); ' – Theon

+0

ithe Klasse Aufruf sieht wie folgt aus – Theon