2017-09-15 2 views
1
Finishing erhält

Ich habe vor kurzem ganz einige SwingWorkers benutzen, und hatte einige Probleme, damit ich einen SCSSE zu schaffen versucht, aber das will offenbar nichtSwingworker nicht

static SwingWorker worker; 
public static void main(String[] args) { 
    worker = new SwingWorker<Object, Object>() { 
     protected Object doInBackground() throws Exception { 
      return "Hello"; 
     } 
     protected void done() { 
      System.out.println("I'm done!"); 
     }; 
    }; 
    System.out.println("working"); 
    try { 
     System.out.println("result: " + worker.get()); 
    } catch (InterruptedException | ExecutionException e) { 
     e.printStackTrace(); 
    } 
    System.out.println("working finished"); 
} 

arbeiten, wenn diese ausgeführt wird, es druckt "funktioniert" und dann läuft das Skript unbegrenzt weiter ...

Antwort

1

Sie starten nie die SwingWorker, also blockiert die worker.get() Methode, während sie auf den Arbeiter wartet, um abzuschließen.

Sie können dies überprüfen, indem Zugabe:

System.out.println("waiting for result"); 
System.out.println("result: " + worker.get()); 

Wenn Sie die SwingWorker ausführen wollen, dann müssen Sie aufrufen:

worker.execute() 

, nachdem Sie die SwingWorker erstellen.

+0

oh wow, das war ein dummer Fehler. Ich dachte, es würde automatisch aufgerufen werden, wenn es nicht schon geschehen ist. – Xerus

Verwandte Themen