我有一个JList,它显示了Dropbox帐户中的文件列表(Dropbox API v2)。
文件列表使用swingworker工作,但是,我可以在任务完成后自动停止或取消swingworker。
我试过了 - > task.cancel(true);
但它在列表完全加载到JList之前取消了该任务。下面是我到目前为止的编码,我知道我非常接近,但是一旦在JList中成功加载文件名,就无法弄清楚如何取消任务。
一旦完成任务,请有人帮助我取消任务。
private TaskLoadFiles tLoadtask;
private class TaskLoadFiles extends SwingWorker<Void, String>
{
@Override
protected Void doInBackground() throws InterruptedException
{
while (!isCancelled())
{
try
{
ListFolderResult resultdec = client.files().listFolder("/Data/");
//model used to stored the data for display
DefaultListModel modelListFilesdownloaddec = new DefaultListModel();
while (true)
{
for (Metadata metadata : resultdec.getEntries()) {
//adds the data to the model --> gets the file names
modelListFilesdownloaddec.addElement(metadata.getName());
//displays the data from the model into the JList
listFilesDownloadBtndeccloud.setModel(modelListFilesdownloaddec);
}
if (!resultdec.getHasMore()) {
break;
}
resultdec = client.files().listFolderContinue(resultdec.getCursor());
}
}
catch (Exception e)
{
JOptionPane.showMessageDialog(null, "Unable to load cloud files. \nError : " + e, "Cloud Error", JOptionPane.ERROR_MESSAGE);
}
}
return null;
}
@Override
protected void done()
{
tLoadtask.cancel(true);
}
protected void process ()
{
}
}
我将如何解决此问题。我已经阅读了多个不同的网页,这些网页基于swingworker和StackOverFlow上发布的问题,但是无法解决这个问题。也许我实现编码的方式存在问题,无法停止。
非常感谢先进的帮助