Передача информации между окнами Java

Задача состоит в том, чтобы при нажатии кнопки в окне Setting менялся счет в другом окне Main(Text,Label без разницы). Данные передаются между окнами и запускается функция, чтобы присвоить значение, но в Main счет не меняется(данные передаются и функция присваивает значение), при этом если запустить ту же самую функцию в Main счет изменяется.
Функция в Setting.

  public Stage GoalLeft(ActionEvent event) throws IOException {
       MainController.DataHolder.data = String.valueOf(count++);
       FXMLLoader loader = new FXMLLoader(
               Main.class.getResource(
                       "main-view.fxml"
               )
       );
       Stage stage = new Stage();
       stage.setScene(
               new Scene(loader.load())
       );

       MainController controller = loader.getController();
       controller.GoalLeft1();

       stage.close();
       return stage;
   }

Функция в Main

 public void GoalLeft1() {
        String data = DataHolder.data;
        SimpleStringProperty textProperty = new SimpleStringProperty();
        goalleft.textProperty().bind(textProperty);
        textProperty.set(data);
        System.out.println(data);
    }

Может есть другая реализация передачи. Буду рад любой помощи.

«Все эти классы являются частью библиотеки JavaFX, которая является стандартной библиотекой для создания графических интерфейсов пользователя в Java.»

« FXML is a simple form of MVC pattern. FXML file is a view, Controller is obvious, what’s missed? The model – a place where you store all data relative to your current view and, thus, which you can use to share your data between controllers.»

В общем, чтобы на этот вопрос ответить, надо прочитать про JavaFX, надо прочитать про паттерны MVC и FXML, а потом подумать. Я никогда JavaFX не видел, и думать на эту тему пока желания нет.

Звучит как будто в программе существуют несколько объектов этого класса. Типа в первом случае создается еще один объект Main.