Почему я не могу передавать значения с контроллеров и отображать в сцене? - PullRequest
0 голосов
/ 24 октября 2018

Это контроллер для установки текста для метки.

@FXML
private Label label1;

public void two(ActionEvent event) throws IOException {

    Parent root = FXMLLoader.load(getClass().getResource("window2.fxml"));
    Scene switchEdit = new Scene(root);
    Stage stage = (Stage)((Node)event.getSource()).getScene().getWindow();

    stage.setScene(switchEdit);
    stage.show();
}

@Override
public void initialize(URL location, ResourceBundle resources) {


}

public void initData(String title) {
    label1.setText(title);
}

}

Это контроллер для получения значения, необходимого для метки1.Я уже создал объект и вызвал метод на первом контроллере для передачи значения из текстового поля.

@FXML
private TextField txt;

public void goBack(ActionEvent event) throws IOException {
    FXMLLoader loader = new FXMLLoader();
    Parent roo = FXMLLoader.load(getClass().getResource("window.fxml"));
    Scene chEdit = new Scene(roo);
    Stage stage = (Stage)((Node)event.getSource()).getScene().getWindow();

    controller2 control = loader.getController();
    control.initData(txt.getText());


    stage.setScene(chEdit);
    stage.show();
}


}

Я уже просмотрел несколько учебных пособий, но ничего не работает!

1 Ответ

0 голосов
/ 24 октября 2018

Вы загружаете fxml статическим методом FXMLLoader.load(URL) вместо использования экземпляра FXMLLoader для загрузки fxml.

Измените

FXMLLoader loader = new FXMLLoader();
Parent roo = FXMLLoader.load(getClass().getResource("window.fxml"));

на

FXMLLoader loader = new FXMLLoader(getClass().getResource("window.fxml"));
Parent roo = loader.load();

Конечно, это также требует указания атрибута fx:controller в корневом элементе window.fxml.Его значением должно быть полное имя вашего controller2 класса.

PS: рассмотрите возможность соблюдения соглашений об именах java и используйте имена типов, начинающиеся с заглавной буквы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...