Диалог приложения Javafx не закрывается, когда я открываю его во второй раз - PullRequest
0 голосов
/ 26 января 2020

Я открываю свой диалог из этого кода, который в моем главном контроллере называется InvoicecreationController. Когда я впервые открываю диалоговое окно, выбираю строку и нажимаю клавишу Enter, она закрывается. Однако, когда я открываю его во второй раз, он не закрывается.

public void openitemsearchPopWindow(){
    try {
        FXMLLoader loader = new FXMLLoader(getClass().getResource("/AccApp/customers/newinvoice/modals/ItemSearchResults.fxml"));
        Parent root = loader.load();
        ItemSearchResultsController enteritemNameforsearchController = loader.getController();
        enteritemNameforsearchController.getupdateinvoiceController(this);

        Stage stageSearchedSupplier = new Stage();
        stageSearchedSupplier.setScene(new Scene(root));           
        stageSearchedSupplier.initModality(Modality.APPLICATION_MODAL);
        stageSearchedSupplier.initOwner(customername.getScene().getWindow());
        stageSearchedSupplier.initStyle(StageStyle.UNDECORATED);            
        stageSearchedSupplier.show();
    } catch (IOException ex) {
         Logger.getLogger(invoicecreationController.class.getName()).log(Level.SEVERE, null, ex);
    }
}

Мой код для контроллера диалогового окна приведен ниже.

@FXML
public TableView<Itemnames> seachedresultsTable;

@FXML
public TableColumn<Itemnames, String> itemnameCol;

@FXML
public TextField searchtextfield;

@FXML
public AnchorPane rootPane;

private invoicecreationController invoicecreationcontroller;

public void getupdateinvoiceController(invoicecreationController invoicecreationcontroller) {
    this.invoicecreationcontroller = invoicecreationcontroller;
}

@Override
public void initialize(URL url, ResourceBundle rb) {
    seachedresultsTable.widthProperty().addListener(new ChangeListener<Number>() {

        @Override
        public void changed(ObservableValue<? extends Number> observable, Number oldValue,
                Number newValue) {

            TableHeaderRow header = (TableHeaderRow) seachedresultsTable.lookup("TableHeaderRow");
            header.reorderingProperty().addListener(new ChangeListener<Boolean>() {
                @Override
                public void changed(ObservableValue<? extends Boolean> observable,
                        Boolean oldValue, Boolean newValue) {
                    header.setReordering(false);
                }
            });
        }
    });

    seachedresultsTable.setOnKeyPressed(new EventHandler<KeyEvent>() {
        @Override
        public void handle(KeyEvent event) {

            if (event.getCode() == KeyCode.ENTER) {
                String myIndex = seachedresultsTable.getSelectionModel().getSelectedItem().getName();
                if (!"".equals(myIndex)) {
                    invoicecreationcontroller.updateTableCell(myIndex);
                    Stage stage = (Stage) searchtextfield.getScene().getWindow();
                    stage.close();
                }
            }
        }
    });
    itemnameCol.setCellValueFactory(new PropertyValueFactory<>("name"));
    loadItemNames();
}
private ObservableList<Itemnames> data;
List<Itemnames> itemnameList;
...