import javafx.application.Application;
import javafx.concurrent.Task;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.scene.text.Font;
import javafx.stage.Stage;
/**
* JavaFX App
*/
public class App extends Application {
public static void main(String[] args) {
launch();
}
@Override
public void start(Stage stage) {
// Création de la tâche de fond
Task < Void > labelRefreshTask = new Task < Void > () {
@Override
public Void call() throws InterruptedException {
// Compteur avec une pause de 200ms
int i = 0;
while (i < 100) {
Thread.sleep(200);
// Nouveau message avec la valeur de i
updateMessage(String.valueOf(i));
i++;
}
return null;
}
};
Label label = new Label();
label.setFont(new Font(32));
// Récupération de la valeur de i du compteur
label.textProperty().bind(labelRefreshTask.messageProperty());
// Création du Thread et démarrage
Thread clockThread = new Thread(labelRefreshTask);
// Le thread sera coupé lorsque l'application est fermée
clockThread.setDaemon(true);
clockThread.start();
Scene scene = new Scene(new StackPane(label), 640, 480);
stage.setScene(scene);
stage.show();
}
}
Commentaires
Enregistrer un commentaire