如何在 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 的原因。