Как перезагрузить центр BorderPane при нажатии кнопки на другом этапе? - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть два этапа.На одном этапе (основной этап) у меня есть 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;
    }
...