这是我的示例代码...我面临的问题是我的 swingWorker 扩展类仅向我显示 doInBackground() 作为覆盖方法。我也想使用 done() 和 process() 方法,但是我的类没有显示它 @overided 也没有调用 done/process 方法,它需要调用离开 while 循环等等,因为我知道它是无限循环但是为什么不是在 publish() 上调用 process 方法吗?
public class getChatSwingWorkerThread extends SwingWorker<String , String> {
private final JTextArea chat_text_area;
private PostDataConnection post = null;
private BasicUserInterface chatWindow = null;
public getChatSwingWorkerThread(JTextArea text_area){
chatWindow = new BasicUserInterface();
this.chat_text_area = text_area;
post = new PostDataConnection();
}
@Override
protected String doInBackground() throws Exception {
String returnData = "";
while(true){
returnData = post.getAvailableChat();
if(!returnData.equals("")){
publish(returnData);
}
}
}
protected void process(String returnData) {
chat_text_area.append(returnData);
}
public void done(String returnData) throws InterruptedException, ExecutionException{
chat_text_area.append(get());
}
最佳答案
那是因为您的 process
和 done
方法与父类(super class)中的签名不同。
process
方法的签名是
protected void process(List<V> chunks)
在你的情况下归结为
protected void process(List<String> chunks)
done
方法没有任何参数
protected void done()
关于java - SwingWorker 扩展类未显示覆盖的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12893797/