2016-06-02 8 views
1

私はスプラッシュスクリーンを作ろうとしているので、いくつかの言葉が表示されたままにする必要があります。私はスレッドを使用しましたが、ラベルのループをどのようにして表示し、1秒後にそれが変わるか分かりません。ここJavaFXを使用して1秒後にラベルの内容を変更するにはどうすればよいですか?

package br.com.codeking.zarsystem.splash; 

import javafx.concurrent.Task; 
import javafx.concurrent.WorkerStateEvent; 
import javafx.event.EventHandler; 
import javafx.fxml.FXML; 
import javafx.scene.control.Label; 

public class ControllerSplash { 

    @FXML 
    Label lblLoading; 



    @FXML 
    private void initialize() { 
     System.out.println("app start"); 

     lblLoading.setStyle("-fx-font-size: 16px;" + "-fx-font-family: Ubuntu;" 
       + " -fx-text-fill: white;"); 

私は、このステップを繰り返して10回を試みたが、それは私がのためにループでこれを実行することはできません

 while (i <= 10) { 

      Task<Void> sleeper = new Task<Void>() { 

       @Override 
       protected Void call() throws Exception { 
         try { 
          Thread.sleep(1500); 

         } catch (Exception e) { 
          e.printStackTrace(); 
         } 

        return null; 
       } 
      }; 

      sleeper.setOnSucceeded(new EventHandler<WorkerStateEvent>() { 
       @Override 
       public void handle(WorkerStateEvent event) { 

        lblLoading.setText("to change " + i); 
       } 
      }); 
      new Thread(sleeper).run(); 

       i++; 
     } 
    } 

} 

に動作しませんか?だから私は何を私は しなければならないか分からない...私が探しているが、何も私を助けていない。あなたはできる? ありがとう!

答えて

1

あなたはPauseTransitionを使用することができます。

PauseTransition pauseTransition = new PauseTransition(Duration.seconds(1)); 
pauseTransition.setOnFinished(e -> lblLoading.setText("complete")); 
pauseTransition.play(); 
+0

ありがとうございました!!!できます! –

関連する問題