java - Swing 工作线程 : Inner class vs passing parameter

标签 java swing inner-classes jtextpane swingworker

我知道 SO 是针对特定问题的,但我需要关于在 Java 中使用 swing 工作线程的正确做法是什么的建议。

我的应用程序生成大型 HTML 文本以响应显示在 jTextPane 中的计算过程。为了避免阻塞 GUI,我过去常常在 Swing 工作线程中进行计算。

我的问题是以下开始计算我需要在 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 中哪一个是正确的。如果两者都“正确”,那么两者的优缺点是什么。

最佳答案

两种方法都可以。内部类的优点是它可以访问封闭对象的内部。缺点是它不能在另一个上下文中重用(例如,另一个具有类似界面的框架)。

只要确保您的代码结构良好且可读即可。例如,您可能希望将 done() 方法中的三个方法调用提取到框架的单个方法中。

关于java - Swing 工作线程 : Inner class vs passing parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10714472/

相关文章:

java - 以编程方式滚动 JMapViewer map

java - 如何将引用模块中字段的匿名 Provider 移动到单独的类中?

java - 当LinkedList是用户定义对象类型时,我们如何在java中迭代LinkedList?

java - 使用 Xpath 向属性添加新值

java - 作为类型的接口(interface)名称

Java 5 - 任意点击将模态对话框置于最前面

java - void 变量有什么用?

java - 查找和替换对话框

java - 通过在内部类中实现 Comparable 来提供多种排序选项

Java - 使内部类能够修改外部类