JavaFX: как передать значение из фонового потока в поток пользовательского интерфейса JavaFX с помощью Task
У меня есть одна рабочая задача, которая постоянно использует веб-сервис и возвращает целочисленное значение.
Мое приложение состоит из различных (30) текстовых полей с соответствующей переключателем. Когда я нажимаю переключатель, я хочу отобразить значение из фоновой задачи в текстовое поле рядом с переключателем.
Как я могу передать значение из фонового потока в поток пользовательского интерфейса JAVAFX в этой конкретной ситуации?
Я новичок в JavaFX и использовал следующий способ. Это правильный подход?
@FXML
private TabPane mainTabPane;
Создана задача в контроллере главного окна, а также запущена в контроллере главного окна
myScheduledService.setPeriod(Duration.seconds(10));
myScheduledService.start();
И создал задачу:
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));
}
}; }