我不太会说英语,所以我希望你能理解我。
好吧,我正在尝试在场景之间传递值。在我的第一个场景中,我有一个图标,当我单击它时(图标),它打开了我的第二个场景,在该场景中,我显示了带有值的表格视图,这些值是在选择其中一个值时要传递的值。
问题是,当我再次显示第一个场景时,它会在水龙头窗格的第一个水龙头处打开,并且我必须再次选择想要的水龙头,我想知道是否存在某种方法可以在特定选项卡中打开场景或让第一个场景打开,当我选择一个值时,第二个场景关闭,第一个场景在文本字段中显示该值。
这是我的代码:
第一个场景控制器(图标单击它):
@FXML
void seleccionarProveedor(MouseEvent event) {
try {
Node node = (Node) event.getSource();
Stage stage = (Stage) node.getScene().getWindow();
stage.close();
Parent root = FXMLLoader.load(getClass().getResource("/interfaces/seleccionarProveedor.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
} catch (IOException ex) {
Logger.getLogger(MercanciaController.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void proveedor(Proveedor proveedor) {
txtProveedor.setText(proveedor.getNombre());
}
第一个场景的图像:
第二个场景的代码控制器(当我从表格视图中选择一个值时):
public Stage seleccionar(Proveedor proveedor) {
try {
FXMLLoader loader = new FXMLLoader(
getClass().getResource(
"/interfaces/gestionMercancia.fxml"
)
);
Stage stage = new Stage();
stage.setScene(
new Scene(
(Pane) loader.load()
)
);
MercanciaController controller
= loader.<MercanciaController>getController();
controller.proveedor(proveedor);
stage.show();
return stage;
} catch (IOException ex) {
Logger.getLogger(SeleccionarProveedorController.class.getName()).log(Level.SEVERE, null, ex);
return null;
}
}
@FXML
public void seleccionarProveedor(MouseEvent event) {
Node node = (Node) event.getSource();
Stage stage = (Stage) node.getScene().getWindow();
stage.close();
Proveedor proveedor = tblData.getSelectionModel().getSelectedItem();
seleccionar(proveedor);
}
第二个场景的图像: