【问题标题】:JavaFX execute code after the Task is completed任务完成后JavaFX执行代码
【发布时间】:2017-01-16 15:29:22
【问题描述】:

我正在为我的应用程序使用 JavaFX,并且我正在使用 JavaFX 中的 Task 来上传文件。

public class Upload extends Task<UploadFile> {  
   private UploadFile uploadFile;     
   public Upload(UploadFile uploadFile){
        this.uploadFile= uploadFile;
    }

    @Override
    protected synchronized UploadFile call() throws Exception {
        ....
            hcl.invokeMethodUploadFile(uploadFile);
            return null;
    }
}

“initiate”方法创建一个 UploadFile-Container 并将其添加到 Threadpoolexecutor 的队列中。此方法将对每个文件执行一次。此类还包含文件上传完成后继续进行的其他必要信息。

public void initiate(){

        UploadFile uc = new UploadFile(file);
        // Set other informations as well

   // add Container to queue
        main.getUploadFiles().add(uc);

    } 

UploadFile 是一个包含有关文件、服务器信息等信息的类。
除其他外,我想在上传完成后将 url 插入数据库。文件上传后如何执行一些代码?

【问题讨论】:

  • 如果任务的返回类型为UploadFile,为什么它会返回null?
  • 这是我的代码中的一个错误,几秒钟前注意到它并将其更改为 void
  • 现在它不会编译了。如果它不应该返回任何东西,请将其扩展 Task&lt;Void&gt; 并返回 null
  • 哦,原来是因为这个,才写了这门课几个月

标签: java task javafx-8


【解决方案1】:

当您创建任务时,您可能会在某处使用

Upload upload = new Upload(uc);

你可以的

upload.setOnSucceeded(e -> {
    // this code executed when task is successfully completed
    // this is executed on the FX Application Thread, so you can
    // safely modify the UI
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    • 2014-10-27
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    • 1970-01-01
    相关资源
    最近更新 更多