2015-05-11 3 views
0

Я хочу запустить задачу, и в то же время я хочу прогресс. Я нашел, как делать оба потока одновременно, но теперь я хочу, чтобы Stage с индикатором прогресса закрылся, когда задача завершена (когда 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

, но тогда у меня есть два раза возврат нуль, разве это не проблема? – MiLo

+0

@MiLo Поскольку вы не используете 'Task' для вычисления определенного значения, это не имеет значения. – eckig

+0

и где я пишу task.setOnSucceeded()? Нужно ли быть в вызове()? – MiLo

Смежные вопросы