Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.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 Swing Worker线程说在超类中没有Process()方法_Java_Multithreading_Swing_Swingworker - Fatal编程技术网

Java Swing Worker线程说在超类中没有Process()方法

Java Swing Worker线程说在超类中没有Process()方法,java,multithreading,swing,swingworker,Java,Multithreading,Swing,Swingworker,我试图在更新GUI时实现SwingWorker线程。我知道process()方法是由EDT执行的,所以如果我需要更新GUI,我应该将更新代码放在该方法中 然而,当我试图重写process()方法时,我得到了一个错误,该方法没有实现来自超类型的方法 请问我是缺少什么还是Process()方法不再存在 class SwingWorkerThread extends SwingWorker<String, String> { @Override protected Str

我试图在更新GUI时实现SwingWorker线程。我知道process()方法是由EDT执行的,所以如果我需要更新GUI,我应该将更新代码放在该方法中

然而,当我试图重写process()方法时,我得到了一个错误,该方法没有实现来自超类型的方法

请问我是缺少什么还是Process()方法不再存在

class SwingWorkerThread extends SwingWorker<String, String> {

    @Override
    protected String doInBackground() throws Exception {
        String Pub = "A";

        for (int i = 0; i < 20; i++) {
            Pub = String.valueOf(i);

            publish(Pub);
        }

        return Pub;
    }

    @Override
    protected String process(String h) {
        System.out.println(Pub);
        MainFrame.TextArea.setText(Pub);
        return null;
    }

    @Override
    protected void done() {
        String status;
        status = get();
        try {

            System.out.println("Done");

        } catch (Exception ex) {
            System.out.println("Error: " + ex);
        }
    }

}
类SwingWorkerThread扩展SwingWorker{
@凌驾
受保护的字符串doInBackground()引发异常{
字符串Pub=“A”;
对于(int i=0;i<20;i++){
Pub=String.valueOf(i);
出版(出版);
}
返回酒吧;
}
@凌驾
受保护字符串进程(字符串h){
System.out.println(Pub);
MainFrame.TextArea.setText(Pub);
返回null;
}
@凌驾
受保护的void done(){
字符串状态;
status=get();
试一试{
系统输出打印项次(“完成”);
}捕获(例外情况除外){
System.out.println(“错误:+ex”);
}
}
}

SwingWorker上没有
字符串进程(String)
方法。有一个
无效流程(列表)
,这可能就是您想要的


(这仍然无法解决以下事实:
Pub
是一个局部变量,在该方法中不可见。)

SwingWorker
上没有
字符串进程(字符串)
方法。有一个
无效流程(列表)
,这可能就是您想要的

(这仍然无法解决以下事实:
Pub
是一个局部变量,在该方法中不可见。)

具有不同的参数和不同的返回类型:

protected void process(List<V> chunks)
protectedvoid进程(列表块)
只有具有相同签名(即:名称加上其参数的数量和类型)和返回类型的子类的方法才能重写超类方法,cf..

具有不同的参数和不同的返回类型:

protected void process(List<V> chunks)
protectedvoid进程(列表块)

只有具有相同签名(即:名称加上其参数的数量和类型)和返回类型的子类的方法才能覆盖超类方法,cf..

我已经能够修复它。但是,我的GUI在doInBackgound仍在工作时挂起。我认为通过process()方法更新GUI可以解决这个问题,但事实并非如此。拜托,我该怎么做呢?我已经能够修复它了。但是,我的GUI在doInBackgound仍在工作时挂起了。我认为通过process()方法更新GUI可以解决这个问题,但事实并非如此。拜托,我该怎么做,除非那是一个内部阶级。。。。这将无法编译。你是在使用一个合适的IDE,还是只是简单地将一些东西侵入到某个命令控制台中?除非那是一个内部类。。。。这将无法编译。你是在使用一个合适的IDE,还是只是简单地在一些命令控制台中植入一些东西?