private void bindTaskToControl(ServiceAndTask demoControl, Task<String> task) { demoControl.startTask.setOnMouseClicked((val) -> new Thread(task).start()); demoControl.labelTask.textProperty().bind(task.messageProperty()); task.addEventHandler( WorkerStateEvent.WORKER_STATE_SUCCEEDED, (val) -> { try { demoControl.labelTask.textProperty().unbind(); demoControl.labelTask.setText(task.get()); demoControl.startTask.setDisable(true); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } }); demoControl.progressTask.progressProperty().bind(task.progressProperty()); }