如何首先调用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
答案 0 :(得分:2)
如果您想知道SwingWorker
何时完成执行,您有几个基本选择。
第一种方法是覆盖SwingWorker
的{{1}}方法,该方法在done
退出后调用,但在EDT的上下文中调用
或者...
您可以将doInBackground
附加到PropertyChangeListener
并监控SwingWorker
属性,检查值是否为state
或者...
您可以调用SwingWorker.StateValue.DONE
,它会等到SwingWorker#get
方法存在,并返回doInBackground
返回的值,或者会抛出导致doInBackground
的{{1}} 1}}方法退出。
请查看javax.swing.SwingWoker
和Worker Threads and SwingWorker了解详情