Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何执行内部Swingworker类?_Java_Swing_Inner Classes - Fatal编程技术网

Java 如何执行内部Swingworker类?

Java 如何执行内部Swingworker类?,java,swing,inner-classes,Java,Swing,Inner Classes,我想从主GUI执行ExampleSwingWorker1。主GUI类编译并执行一些jFrame和DB操作,并向用户显示主应用程序屏幕。我还有另外一门课给我所有的荡秋千的人 public class WorkerClass { public class ExampleSwingWorker1 extends SwingWorker<Void, Void> { protected Void doInBackground() throws Exception

我想从主GUI执行ExampleSwingWorker1。主GUI类编译并执行一些jFrame和DB操作,并向用户显示主应用程序屏幕。我还有另外一门课给我所有的荡秋千的人

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();
        }
    }

}

我尝试使用上述方法实例化ExampleSwingWorker1,但这是不可能的。为reach内部类提供此方法。

首先需要
WorkerClass的实例

Workerclass worker = new WorkerClass();
WorkerClass.ExampleSwingWorker1 trying = worker.new ExampleSwingWorker1();
trying.execute();
阅读更多:|

注意:如果它不使用WorkerClass实例方法,那么您不需要WorkerClass实例来创建
示例SwingWorker1
实例


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

我不知道它是否有效。当我试着打字时。列出swingworker的可用操作。但实例化行仍然返回错误。怎么可能?因为你需要一个
WorkerClass
first的实例谢谢你的评论。下面的代码为我工作。但我觉得Swingworker有一些逻辑问题。因为我引用了MainGUI类,所以我想你的设计很糟糕。。MainGUI使用WorkerClass,WorkerClass使用MainGUI,它们太耦合了。我必须找到一种使用MainGUI方法的方法,并从该软件更新MainGUI组件,而不使用实例。@BlackWhite 1)您可以通过参数
new ExampleSwingWorker(this)
2)传递引用,您可以创建自己的
WorkerListener
,然后在
尝试时。addPropertyChangeListener(new MyListener)
如果MyListener可以/应该是
MainGUI的内部类,则可以在那里进行更新:d3)另一种可能性是使用一种在WorkerClass和MainGUI之间进行通信的中介
Workerclass worker = new WorkerClass();
WorkerClass.ExampleSwingWorker1 trying = worker.new ExampleSwingWorker1();
trying.execute();