2015-05-11 51 views
0

我想運行一個任務,同時我想要一個進度條。我發現如何在同一時間執行兩個線程,但是現在我希望當任務完成時(關閉getTeller()== 1380時)關閉進度條的舞臺並打開一個新的舞臺。 有人可以幫助我嗎?這是我已經有的(它顯示進度條,但進度條從不關閉)。任務完成後的開放階段JavaFX

   progressStage = new Stage();     
       progressStage.initModality(Modality.APPLICATION_MODAL);     

       VBox root6 = new VBox(2); 
       task = new Task<Integer>() { 
        @Override 
        public Integer call() throws Exception{ 
         n = new Netwerk(bestand);//this is where the count starts to 1380 
         if(n.getTeller()==1380){ 


          progressStage.close(); 
          SaveStage = new Stage(); 
          SaveStage.initModality(Modality.APPLICATION_MODAL); 
          ...//here I do the layout part 

         } 
         return null; 

        } 
       }; 

       pb = new ProgressBar(); 
       pb.progressProperty().bind(task.progressProperty()); 
       new Thread(task).start(); 

       Label lg = new Label("Even geduld..."); 
       root6.getChildren().addAll(lg,pb); 
       Scene scene5 = new Scene(root6,300,200); 
       progressStage.setTitle("TreinSysteem"); 
       progressStage.setResizable(false); 
       progressStage.setScene(scene5); 
       progressStage.show(); 

回答

0
  1. 確保您Task結束時符合您的條件(在你的情況:計數1380),例如用簡單的return null
  2. 使用task.setOnSucceeded()Task完成其工作後執行某些操作。在你的情況下:打開一個新的Stage並隱藏ProgressBar
+0

但後來我有兩次返回nul,這不是一個問題嗎? – MiLo

+0

@MiLo由於您沒有使用「任務」來計算特定的值,因此無關緊要。 – eckig

+0

和我在哪裏寫task.setOnSucceeded()?它是否需要在通話中()? – MiLo