gpt4 book ai didi

java - 实现 Java Swing 工作线程时出现问题

转载 作者:行者123 更新时间:2023-11-30 05:06:29 25 4
gpt4 key购买 nike

我刚刚了解了如何执行 swing 后台任务,并且开始尝试它,但在实现方面遇到了一些麻烦。我的代码检索图像并返回一个结果(整数),该结果指示图像检索是成功 result = 0 还是不成功 result = -1。这是我的问题,我太快检索结果了。我可以看到下面代码中 createImage 方法中的语句在 did() 方法中读取结果后执行。我想我认为在 createImage 完成之前,done 方法不会执行。下面是我的代码:

new SwingWorker<int[], Void>() {
int result = -1;
@Override
protected int[] doInBackground() throws Exception {
// TODO Auto-generated method stub
return createImage(); //returns an integer array of size one indicating the result
}

protected void done() {
try {
result = get()[0]; //this result is being read before createImage is done
//executing. Why?
thisApplet.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
tree.setEnabled(true);
if (result == -1){
tree.setSelectionPath(null);
return;
}
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
}.execute();

最佳答案

在 doInBackground 方法完成之前,done 方法不会执行。所以这里肯定还有其他事情发生。我猜你可能会调用done和doInBackground而不是run()?如果没有,请尝试通过创建 SSCCE 来查找问题。

关于java - 实现 Java Swing 工作线程时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4945425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com