我想知道是否SwingWorker
必须是我的主 GUI 中的嵌套类。我宁愿让它成为一个外部类,以使 GUI 从我的任何程序逻辑中保持清晰。
我试图使SwingWorker
该类成为外部类,这对于该过程很好,不幸的是我无法从 SwingWorker 类访问我的任何 GUI 字段。每当我尝试从 SwingWorker 的方法中访问一个属性(例如标签或其他任何内容)时,done()
我都会得到一个 nullPointer 异常。
任何建议将不胜感激!
首先非常感谢杰夫!到目前为止工作正常,即使我无法按照您提出的第二个选项关注您。我的一项后台任务计算了某个大小(长值),因此从我的 GUI 中获取该值会很好。
您建议使用 getter 和 setter,但不幸的是我不知道如何在 SwingWorker 类中实现它们。
我试过这样:
public void setSize(long totalSize) {
this.totalSize = totalSize;
}
public long getTotalSize() {
return totalSize;
}
在方法结束时调用 setter doInBackground()
。不幸的是,我无法使用get()
我的 GUI 中的方法。
final MySwingWorker w = new MySwingWorker();
Runnable r = new Runnable() {
public void run() {
// do something with w.get()
}
};
w.setRunnable(r);
w.execute();
在我的情况下,“w”的对象创建不起作用,因为构造函数需要一个 Runnable 对象。我错过了什么吗?请放轻松,这是我第一次与 SwingWorker 合作。:) 再次感谢您的帮助!