Несколько FXML с контроллерами, общий объект

Добрый вечер всем,

Я нашел кучу сообщений уже по этой теме, но я все еще не могу передать объект из Controller1 в Controller2. Есть ли где-нибудь полный учебник или пример проекта, который делает это?

Я дошел до того, что застрял:

Country class

public class Country {
private SimpleStringProperty country = new SimpleStringProperty("");

//Constructor
public Country() {
}

//GETTERS
public String getCountry() {
    return country.get();
}

//SETTERS
public void setCountry(String value) {
    country.set(value);
}

@Override
public String toString() {
    return getCountry();
}
}

Когда программа запускается, основной FXML загружается (Sample.fxml). Он содержит панель границ со строкой меню на верхней панели и панель содержимого в центре. При инициализации я создаю новый объект Country и сохраняю его в глобальной переменной. У меня есть метод, который загружает другой FXML в панель содержимого при нажатии элемента меню:

SampleController.java

public class SampleController implements Initializable {

@FXML
private Pane pContent;

private Country c;

@FXML
private void handleButtonAction(ActionEvent event) throws IOException {
    System.out.println(c); //this prints Belgium, which is correct

    URL url = getClass().getResource("Sub1.fxml");

    FXMLLoader fxmlloader = new FXMLLoader();
    fxmlloader.setLocation(url);
    fxmlloader.setBuilderFactory(new JavaFXBuilderFactory());

    pContent.getChildren().clear();
    pContent.getChildren().add((Node) fxmlloader.load(url.openStream()));
}

@Override
public void initialize(URL url, ResourceBundle rb) {
    c = new Country();
    c.setCountry("Belgium");
}

public Country getCountryFromSampleController(){
    return c;
}
}

Теперь я хочу захватить объект Country при загрузке Sub1.fxml, а это значит, что мне нужно получить объект country при initialize ():

Sub1Controller.java

public class Sub1Controller implements Initializable {

/**
 * Initializes the controller class.
 */
@Override
public void initialize(URL url, ResourceBundle rb) {
    SampleController sp = new SampleController(); //I don't know how to fetch the original SampleController object
    System.out.println(sp.getCountryFromSampleController()); 
    //this prints null, which is ofcourse logical because I make a new SampleController object.         
}    
}

Вопрос, который у меня есть, как я могу получить «оригинал»? Объект SampleController, чтобы я мог использовать метод getCountryFromRoot () для извлечения объекта Country со значением Belgium? Я искал эту проблему часами и часами и прочитал об этом каждый пост в StackOverflow, но, похоже, я не нашел недостающую ссылку ... любая помощь (желательно с этим кодом) приветствуется!

Извините за длинный пост, я старался быть как можно более полным, иначе я никогда не пойму ...

Ответы на вопрос(2)

Ваш ответ на вопрос