我正在用此代码打开对话框,该代码在我的主控制器中名为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;