Как переключиться на сцену, которая использовалась ранее, и одновременно перенести данные из другой сцены - PullRequest
0 голосов
/ 07 апреля 2019

Я использую инструмент управления DVD, и у меня проблема с переключением ступеней.Я знаю, как переключаться между ними, но я хочу перенести данные из текущей сцены в сцену, которую я использовал в 3 сценах ранее, если вы понимаете, что я пытаюсь описать.Чтобы помочь вам понять меня, я опишу мою проблему с помощью нескольких изображений.

https://prntscr.com/n8p1fe

На первом рисунке показан экран, на котором «владелец» программного обеспечения имеет возможность сделатьновый ленд на DVD.При нажатии кнопки «ОК» он переходит к следующему экрану (следующее изображение)

https://prntscr.com/n8p2cm

На этом экране отображаются все клиенты с одинаковыми именами, например, владелец программного обеспечения.просто введите последний шаг.Отметив одного из показанных клиентов и нажав «ОК», владелец программного обеспечения обычно должен вернуться к последнему экрану.Но когда я делаю это, открывается новое окно ссуды, и оно выглядит так:

https://prntscr.com/n8p3i2

Мой вопрос: есть ли способ просто переключиться на последнюю сцену и перенестивыбранный клиент?

PS: я знаю, почему откроется новое окно ленд.Это потому, что я просто открываю новый xD

В следующем коде, который важен для 3 шагов:

Класс NewLendEntryController (Шаг 1):

public NewLendEntryController(){
    dvdDao = new DVDDao();
    customersDAO = new CustomersDAO();
    newEntry = 0;
    lendDao = new LendDao();
    ObservableList<Lend> lends = lendDao.readAll();
    for(int i = 0; i < lends.size(); i++){
        if(i + 1 != lends.get(i).lid){
            newEntry = i + 1;
            System.out.println(newEntry);
            break;
        }
    }

    if(newEntry == 0){
        newEntry = lends.size() + 1;
    }

}

protected void setDVD(DVD dvd){
    this.dvd = dvd;
    textFieldDVD.setText(dvd.getTitel());
}

protected void setCustomer(Customers customer){
    this.customer = customer;
    textFieldCustomer.setText(customer.getVorname() + " " + customer.getNachname());
}

public void closeWindow(){
    buttonCancel.getScene().getWindow().hide();
}

public void openNewCustomerWindow(String forname, String surname) throws IOException {
    FXMLLoader loader = new FXMLLoader(getClass().getResource("NewEntryCustomer.fxml"));
    Parent root = loader.load();
    Stage stage = new Stage();
    stage.initModality(Modality.NONE);
    stage.setTitle("New Customer");
    stage.setScene(new Scene(root, Main.width - 200, Main.height - 200));
    NewEntryCustomerController controller = loader.<NewEntryCustomerController>getController();
    controller.setName(forname, surname);
    stage.show();
}

public void submitEntry() throws SQLException, IOException {
    if(textFieldCustomer.getText().length() == 0 || datePickerStart.getValue() == null || datePickerEnd.getValue() == null){
        Alert alert = new Alert(Alert.AlertType.ERROR);
        alert.setContentText("There are still unfilled fields");
        alert.show();
    } else {
        if(customer != null){
            Lend temp = new Lend(this.newEntry, customer.getKid() , Integer.parseInt("" + this.dvd.getDid()), datePickerStart.getValue().toString(), datePickerEnd.getValue().toString());
            this.dvd.setLend("Ja");
            dvdDao.change(this.dvd);
            if(newEntry == 0){
                lendDao.newEntry(temp, 0);
            } else {
                lendDao.newEntry(temp, 1);
            }
            closeWindow();

        } else {
            // Ermitteln des Vor- und Nachnamen
            String[] splittedCustomersName = textFieldCustomer.getText().split(" ");
            StringBuilder forname = new StringBuilder();
            String surname = "";
            for(int i = 0; i <= splittedCustomersName.length - 1; i++){
                if(i != splittedCustomersName.length - 1){
                    if(i == 0){
                        forname.append(splittedCustomersName[i]);
                    } else {
                        forname.append(" ").append(splittedCustomersName[i]);
                    }
                } else {
                    surname = splittedCustomersName[i];
                }
            }
            // Prüfe, ob es den eingegebenen Kunden bereits gibt
            Boolean checkOnName = customersDAO.checkOnEntry(forname.toString(), surname);
            if(checkOnName){ //Wenn ja,...
                FXMLLoader loader = new FXMLLoader(getClass().getResource("ShowMultipleCustomers.fxml"));
                Parent root = loader.load();
                Stage stage = new Stage();
                stage.initModality(Modality.APPLICATION_MODAL);
                stage.setScene(new Scene(root, Main.width, Main.height));
                ShowMultipleCustomersController controller = loader.getController();
                controller.setName(forname.toString(), surname);
                controller.setDVD(dvd);
                stage.showAndWait();
            } else { // Wenn nicht,...
                Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
                alert.setTitle("New Customer");
                alert.setContentText(String.format("There is no one called %s %s in the Customer database yet! Please add the customer to the database!",
                        forname.toString(), surname));
                ButtonType buttonCreateNew = new ButtonType("New Customer");
                ButtonType buttonCancel = new ButtonType("Cancel", ButtonBar.ButtonData.CANCEL_CLOSE);
                alert.getButtonTypes().setAll(buttonCreateNew, buttonCancel);
                Optional<ButtonType> result = alert.showAndWait();
                if(result.get() == buttonCreateNew){
                    openNewCustomerWindow(forname.toString(), surname);
                }
            }
        }
        closeWindow();
    }

}

@Override
public void initialize(URL location, ResourceBundle resources) {
    textFieldID.setText("" + newEntry);

}

}

Класс ShowMultiplesCustomersController (шаг 2 и 3):

public ShowMultipleCustomersController(){
    customersDAO = new CustomersDAO();
}

public void openNewLendWindow(DVD dvd, Customers customers) throws IOException {
    FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("NewLendEntry.fxml"));
    Parent root = fxmlLoader.load();
    Stage stage = new Stage();
    stage.setOpacity(1);
    stage.initModality(Modality.WINDOW_MODAL);
    stage.setTitle("New Lend");
    stage.setScene(new Scene(root, Main.width - 200, Main.height - 200));
    NewLendEntryController controller = fxmlLoader.<NewLendEntryController>getController();
    controller.setDVD(dvd);
    controller.setCustomer(customers);
    stage.showAndWait();
}

public void openNewLendWindow(DVD dvd) throws IOException {
    FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("NewLendEntry.fxml"));
    Parent root = fxmlLoader.load();
    Stage stage = new Stage();
    stage.setOpacity(1);
    stage.initModality(Modality.APPLICATION_MODAL);
    stage.setTitle("New Lend");
    stage.setScene(new Scene(root, Main.width - 200, Main.height - 200));
    NewLendEntryController controller = fxmlLoader.<NewLendEntryController>getController();
    controller.setDVD(dvd);
    stage.showAndWait();
}

private void openNewCustomerWindow() throws IOException, SQLException {
    FXMLLoader loader = new FXMLLoader(getClass().getResource("NewEntryCustomer.fxml"));
    Parent root = loader.load();
    Stage stage = new Stage();
    stage.initModality(Modality.NONE);
    stage.setTitle("New Customer");
    stage.setScene(new Scene(root, Main.width - 200, Main.height - 200));
    NewEntryCustomerController controller = loader.getController();
    controller.setName(forname, surname);
    stage.showAndWait();
    updateTable();
}

void setName(String forname, String surname) throws SQLException {
    this.forname = forname;
    this.surname = surname;
    updateTable();
}

void setDVD(DVD dvd){
    this.dvd = dvd;
}

public void newClicked() throws IOException, SQLException {
    openNewCustomerWindow();
}

public void updateTable() throws SQLException {
    ObservableList<Customers> temp = customersDAO.getEntry(forname, surname);
    tableView.setItems(temp);
}

public void closeWindow() {
    buttonCancel.getScene().getWindow().hide();
}

public void buttonCancel() throws IOException {
    buttonCancel.getScene().getWindow().hide();
    openNewLendWindow(this.dvd);
}

public void submitEntry() throws IOException {
    if(tableView.getSelectionModel().getSelectedItem() != null){
        closeWindow();
        openNewLendWindow(dvd, tableView.getSelectionModel().getSelectedItem());
    }
}

@Override
public void initialize(URL location, ResourceBundle resources) {
    tableColID.setCellValueFactory(new PropertyValueFactory<>("kid"));
    tableColForname.setCellValueFactory(new PropertyValueFactory<>("vorname"));
    tableColSurname.setCellValueFactory(new PropertyValueFactory<>("nachname"));
    tableColStreet.setCellValueFactory(new PropertyValueFactory<>("street"));
    tableColHouseNumber.setCellValueFactory(new PropertyValueFactory<>("houseNumber"));
    tableColumnTelephoneNumber.setCellValueFactory(new PropertyValueFactory<>("telephoneNumber"));
}

}

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