【发布时间】:2012-05-29 16:16:55
【问题描述】:
我知道 SO 是针对特定问题的,但我需要关于 Java 中使用 swing 工作线程的正确做法的建议。
我的应用程序生成大的 HTML 文本以响应显示在 jTextPane 中的计算过程。为了避免阻塞我曾经在 Swing 工作线程中进行计算的 GUI。
我的问题是以下开始计算我需要在 GUI 的不同菜单复选框和列表框中提供大量信息,并且在计算结束时我需要在 EDT 中启动函数。
这对我来说有两种可能性:
第一个是向我的 Swing Worker 发送大量信息,还需要通过 MainFrame 来访问“done()”中的特定函数
public class MyWorker extends SwingWorker<Void, Void> {
private MyMainFrame frame;
public MyWorker(plenty of params) {
}
@Override
public Void doInBackground() {
//my background process
}
@Override
public void done() {
frame.myfunc1;
frame.myfunc2;
frame.myfunc3;
}
}
第二个是使用内部类
在 Java 中哪个是正确的。如果两者都是“正确的”,那么一个对另一个的优缺点是什么。
【问题讨论】:
-
实际上,这里鼓励任何不是太笼统而无法回答的问题。
标签: java swing inner-classes jtextpane swingworker