【发布时间】:2021-09-22 13:47:16
【问题描述】:
我仍然是用 Java 开发我的项目的新手,你能指出我在将字符串传递给另一个控制器时做错了什么吗?下面是我的解决方案。我正在尝试将 String purchaseCode 的值从我的第一个控制器(DashboardController.java)传递到另一个控制器,以便在查询中使用它或者只是将其设置为文本。但是当我将它调用到我的另一个控制器(InfoSalesController.java)时,我得到了 null。
DashboardController.java
...
SalesController sales = getTableView().getItems().get(getIndex());
String purchaseCode = sales.getPurchaseCol();
Hyperlink link = new Hyperlink(purchaseCode);
link.setOnAction(event->{
try{
Stage stage = new Stage();
FXMLLoader loader = new
FXMLLoader(getClass().getResource("/store/sales/infoSales.fxml"));
Parent pane = (Parent) loader.load();
InfoSalesController is = loader.getController();
is.setPurchaseSales(purchaseCode);
stage.setScene(new Scene(pane));
stage.setResizable(false);
stage.initModality(Modality.APPLICATION_MODAL);
stage.show();
}catch(IOException e){
e.printStackTrace();
}
});
setGraphic(link);
...
InfoSalesController.java
public String getPurchaseSales() {
return purchaseSales;
}
public void setPurchaseSales(String purchaseSales) {
this.purchaseSales = purchaseSales;
}
@Override
public void initialize(URL url, ResourceBundle rb) {
purchaseTxt.setText(purchaseSales);
}
【问题讨论】:
-
这可能会有所帮助,尤其是 Platform.runlater 中用于初始化方法的部分? stackoverflow.com/a/14432578/12181863
-
它工作了,但是 Platform.runlater 如何帮助程序工作?
-
我添加了一个答案来解释
Platform.runLater()如何帮助程序运行(并讨论或链接到替代方案)。