JavaFX: Como passar valor do thread em segundo plano para o thread da interface do usuário JavaFX com a Tarefa
Eu tenho uma tarefa do trabalhador que consome continuamente o serviço da web e retorna valor inteiro.
Meu aplicativo consiste em diferentes (30) caixas de texto com o botão de opção associado. Quando clico no botão de opção, desejo exibir o valor da tarefa em segundo plano no campo Texto ao lado do botão de opção.
Como posso passar o valor do thread de segundo plano para o thread da interface do usuário JAVAFX nessa situação específica?
Eu sou novo no JavaFX e usado da seguinte maneira. Essa abordagem é correta?
@FXML
private TabPane mainTabPane;
Tarefa criada no controlador da janela principal e também em execução no controlador da janela principal
myScheduledService.setPeriod(Duration.seconds(10));
myScheduledService.start();
E tarefa criada:
private class MyScheduledService extends ScheduledService {
@Override
protected Task createTask() {
return new Task() {
@Override
protected String call() throws IOException, ParseException {
// calling web service here
Integer data = callToMyWebService();
Tab tab = mainTabPane.getTabs().get(mainTabPane.getTabs().size() - 1);
BorderPane pane = (BorderPane) tab.getContent();
HBox hBox = ((HBox) pane.getChildren().get(0));
Text operationValueDisplayText = (Text) hbox.getChildren().get(2);
// displaying data in text box
operationValueDisplayText.setText(String.valueOf(data));
}
}; }