2017-01-16 13 views
0

私は自分のアプリケーションにJavaFXを使用していますが、JavaFXのタスクを使用してファイルをアップロードしています。タスクの完了後にJavaFXがコードを実行します

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; 
    } 
} 

方法「を開始は、」UploadFile-コンテナを作成し、Threadpoolexecutorのキューに追加します。このメソッドはすべてのファイルに対して一度だけ実行されます。また、このクラスには、ファイルのアップロードが完了した後に進むための追加および必要な情報が含まれています。

public void initiate(){ 

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

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

    } 

UploadFileは、私は、アップロードが完了した後、データベースにURLを挿入したいとりわけ
など、serverinformation、ファイルに関する情報を含むクラスです。ファイルをアップロードした後にコードを実行するにはどうすればよいですか?あなたはおそらく

Upload upload = new Upload(uc); 

でどこかに行うタスクを作成すると

+1

を行うことができますか? –

+0

これは数秒前に気づき、それをvoidに変更したことが私のコードで間違っています – Ronon

+0

さて、今度はコンパイルされません。何も返さなければならない場合は、 'Task 'を拡張し、 'null'を返します。 –

答えて

4

あなたはそれが `UploadFile`の戻り値の型を持っている場合は、なぜあなたのタスクはnullを返している

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 
}); 
関連する問題