java Swing Worker线程说在超类中没有Process()方法
我试图在更新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);
}
}
}
# 1 楼答案
在
SwingWorker
上没有String process(String)
方法。有一个void process(List<V>)
,这可能就是你想要的(这仍然无法解决
Pub
是一个局部变量且在该方法中不可见的事实。)# 2 楼答案
^{}'s ^{}method 具有不同的参数和不同的返回类型:
只有具有相同签名(即:名称加上其参数的数量和类型)和返回类型的子类的方法才能重写超类方法,参见https://docs.oracle.com/javase/tutorial/java/IandI/override.html