如何执行Inner Swingworker类?

时间:2014-03-21 14:58:15

标签: java swing inner-classes

我想从主GUI执行ExampleSwingWorker1。主GUI类编译并执行一些jFrame和DB操作,并向用户显示主应用程序屏幕。我还有另一个班级来存放我所有的Swingworkers。

public class WorkerClass {
  public class ExampleSwingWorker1 extends SwingWorker<Void, Void> {      
        protected Void doInBackground() throws Exception {
            process1();
            process2();
            process3();
            process4();
            process5();
            process6();
            return null;
        }
        public void done() {
           Toolkit.getDefaultToolkit().beep();
        }
    }

}

MainGui类中的按钮操作;

private void buttonRefreshActionPerformed(java.awt.event.ActionEvent evt) {                                              

  WorkerClass.ExampleSwingWorker1 trying = new WorkerClass.ExampleSwingWorker1();   
} 

我尝试使用上面的方法来实例化ExampleSwingWorker1,但这是不可能的。 But this Oracle Link为触及内部类提供了这种方法。

1 个答案:

答案 0 :(得分:1)

您需要WorkerClass第一个

的实例
Workerclass worker = new WorkerClass();
WorkerClass.ExampleSwingWorker1 trying = worker.new ExampleSwingWorker1();
trying.execute();

了解详情:Inner classes | Nested classes

注意:如果它不使用WorkerClass实例方法,则认为它使它成为static,那么您不需要WorkerClass实例来创建ExampleSwingWorker1实例。

注意2:建议您添加@Override注释。原因是什么?阅读here