Я использую инструмент управления 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"));
}
}