如何首先调用swingworker的execute方法,最后调用剩余的代码这是我的代码: -

时间:2014-01-16 05:12:42

标签: java swing swingworker

如何首先调用swingworker的execute方法,最后调用剩余的代码。我能为它做什么?

            imgHeight = getImageHeight(temp);

            imgWidth = getImageWidth(temp);    


            int Matrix = new int [imgHeight][imgWidth][3];

            MapGeneration.execute(); 


            //Matrix here

            Image lImage = Util.RGBMatrixToImage(imgHeight, imgWidth, Matrix);




protected int[][][] doInBackground() throws Exception
{      
    Matrix = createMap(imgHeight, imgWidth, imageMatrix, k);             

    return Matrix;        
}

   Can I use this returned Matrix on other page or to run execute() method at first

1 个答案:

答案 0 :(得分:2)

如果您想知道SwingWorker何时完成执行,您有几个基本选择。

第一种方法是覆盖SwingWorker的{​​{1}}方法,该方法在done退出后调用,但在EDT的上下文中调用

或者...

您可以将doInBackground附加到PropertyChangeListener并监控SwingWorker属性,检查值是否为state

或者...

您可以调用SwingWorker.StateValue.DONE,它会等到SwingWorker#get方法存在,并返回doInBackground返回的值,或者会抛出导致doInBackground的{​​{1}} 1}}方法退出。

请查看javax.swing.SwingWokerWorker Threads and SwingWorker了解详情