如何在 JavaFX 中使用我从另一个控制器发送的整数而不获取 NumberFormatException?
How can I use an integer I sent from another controller in JavaFX without getting a NumberFormatException?
我正在使用以下代码将 Product
发送到另一个控制器:
@FXML
void onActionModifytProduct(ActionEvent event) throws IOException {
Product productSelected = productsTableView.getSelectionModel().getSelectedItem();
FXMLLoader loader = new FXMLLoader();
loader.setLocation(getClass().getResource("/view/ModifyProductMenu.fxml"));
loader.load();
ModifyProductMenuController MPController = loader.getController();
MPController.sendProduct(productSelected);
stage = (Stage) ((Button) event.getSource()).getScene().getWindow();
Parent scene = loader.getRoot();
stage.setScene(new Scene(scene));
stage.show();
}
然后这就是我在另一个控制器中接收该代码的方式:
public void sendProduct(Product product) {
idLbl.setText(String.valueOf(product.getId()));
modifyProductNameTxt.setText(product.getName());
modifyProductInvTxt.setText(String.valueOf(product.getStock()));
modifyProductPriceTxt.setText(String.valueOf(product.getPrice()));
modifyProductMinTxt.setText(String.valueOf(product.getMin()));
modifyProductMaxTxt.setText(String.valueOf(product.getMax()));
}
现在我需要使用在初始化期间发送到 Label idLbl
的整数,但每次我尝试通过在 public void initialize(URL url, ResourceBundle rb) {
下放置 int id = Integer.parseInt(idLbl.getText());
之类的东西来使用它时,我得到一个 java.lang.NumberFormatException
即使我知道我实际上传递的是一个整数,因为我在同一控制器的另一部分使用它(只是不在初始化期间)。有什么办法可以让我的程序在初始化期间读取这个整数吗?我从事此工作已有一段时间了,非常感谢任何帮助!
好吧 initialize() 方法 就像您的 class 中的构造函数,因此它将首先被调用 。您是在它之后调用 sendProduct() 以便将值设置为 idLbl 发生在它之后。所以 在调用初始化方法期间你的值仍然是空的 这就是它抛出 NumberFormatExcpetion 的原因。
我正在使用以下代码将 Product
发送到另一个控制器:
@FXML
void onActionModifytProduct(ActionEvent event) throws IOException {
Product productSelected = productsTableView.getSelectionModel().getSelectedItem();
FXMLLoader loader = new FXMLLoader();
loader.setLocation(getClass().getResource("/view/ModifyProductMenu.fxml"));
loader.load();
ModifyProductMenuController MPController = loader.getController();
MPController.sendProduct(productSelected);
stage = (Stage) ((Button) event.getSource()).getScene().getWindow();
Parent scene = loader.getRoot();
stage.setScene(new Scene(scene));
stage.show();
}
然后这就是我在另一个控制器中接收该代码的方式:
public void sendProduct(Product product) {
idLbl.setText(String.valueOf(product.getId()));
modifyProductNameTxt.setText(product.getName());
modifyProductInvTxt.setText(String.valueOf(product.getStock()));
modifyProductPriceTxt.setText(String.valueOf(product.getPrice()));
modifyProductMinTxt.setText(String.valueOf(product.getMin()));
modifyProductMaxTxt.setText(String.valueOf(product.getMax()));
}
现在我需要使用在初始化期间发送到 Label idLbl
的整数,但每次我尝试通过在 public void initialize(URL url, ResourceBundle rb) {
下放置 int id = Integer.parseInt(idLbl.getText());
之类的东西来使用它时,我得到一个 java.lang.NumberFormatException
即使我知道我实际上传递的是一个整数,因为我在同一控制器的另一部分使用它(只是不在初始化期间)。有什么办法可以让我的程序在初始化期间读取这个整数吗?我从事此工作已有一段时间了,非常感谢任何帮助!
好吧 initialize() 方法 就像您的 class 中的构造函数,因此它将首先被调用 。您是在它之后调用 sendProduct() 以便将值设置为 idLbl 发生在它之后。所以 在调用初始化方法期间你的值仍然是空的 这就是它抛出 NumberFormatExcpetion 的原因。