У меня есть два этапа.На одном этапе (основной этап) у меня есть Borderpane.При нажатии кнопки «Создать заказ» в этой основной сцене я загружаю файл .fxml (Новый заказ) в центр пограничной панели.Этот fxml-файл "New Order" имеет несколько текстовых полей.Теперь я нажимаю вторую кнопку, чтобы открыть второй этап (Новый клиент).Основная сцена все еще открыта в фоновом режиме.На этом этапе «Новый клиент» я могу заполнить текст в текстовых полях.Когда я закрываю этот этап на своей кнопке «Сохранить», я хочу, чтобы в моей основной сцене текстовые поля в центре Borderpane (например, в «New Order fxml») теперь содержали текст из открытого окна.
Длямне просто кажется, что мне нужно снова инициализировать «новый порядок .fxml», но это не сработает, потому что он открыт в фоновом режиме?
Я попытался установить центр основной сцены на ноль, а затем просто перезагрузите «Новый порядок» в центре. Но тогда он не появляется. Но когда я снова нажимаю в главном окне «Создать заказ», тогда текстовые поля заполнены правильным текстом. Но я неЯ хочу щелкнуть это снова.
Если вам нужно больше кода, дайте мне знать.
MainWindowController.java
метод для загрузки нового fxmlв центр моего главного окна:
@FXML
public BorderPane testPane = new BorderPane();
@FXML
protected void createOrder(ActionEvent event) throws IOException {
BorderPane test1 = FXMLLoader.load(getClass().getResource("NewOrder.fxml"));
testPane.setCenter(test1);
}
NewOrderController.java
// метод для открытия новой сцены
private Stage newStage = new Stage();
@FXML
private void openNewCostumerWindow(ActionEvent event) {
try {
BorderPane root = FXMLLoader.load(getClass().getResource("NewCustomer.fxml"));
Scene scene = new Scene(root, 600, 250);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
newStage.setTitle("Neuer Kunde");
//Set that the main window can not be clicked
newStage.initModality(Modality.WINDOW_MODAL);
newStage.initOwner(newOrderPane.getScene().getWindow());
newStage.setResizable(false);
newStage.setScene(scene);
newStage.show();
} catch (Exception e) {
e.printStackTrace();
}
}
//здесь мы получаем текст из наших текстовых полей NewCustomer и устанавливаем их как текст fили эти текстовые поля.Но это не работает
@FXML
public void initialize() {
try {
nameTextField.setEditable(true);
nameTextField.setText(NewCustomerController.customerName);
streetTextField.setText(NewCustomerController.customerStreet);
cityTextField.setText(NewCustomerController.customerCity);
countryTextField.setText(NewCustomerController.customerCountry);
System.out.println(NewCustomerController.customerName);
System.out.println("TEST");
} catch (Exception e) {
}
}
NewCustomerController.java
@FXML
LinkedList<Customer> saveNewCustomer(ActionEvent event) throws IOException {
//creating new Customer
customerName = newNameTextField.getText();
customerStreet = newStreetTextField.getText();
customerCity = newCityTextField.getText();
customerCountry = newCountryTextField.getText();
Customer customer = new Customer (customerName, customerStreet, customerCity, customerCountry);
//add customer to the list
customerList.add(customer);
System.out.println(customerList);
//after saving close the stage
Stage stage = (Stage) quitButton.getScene().getWindow();
stage.close();
return customerList;
}