我在选择menuItem时关闭当前场景并打开另一个场景时遇到问题.我的主要阶段编码如下:
public void start(Stage primaryStage) throws Exception { primaryStage.setTitle("Shop Management"); Pane myPane = (Pane)FXMLLoader.load(getClass().getResource ("createProduct.fxml")); Scene myScene = new Scene(myPane); primaryStage.setScene(myScene); primaryStage.show(); }
然后在createProduct.fxml中,当menuItem是onclick时,它将执行以下操作:
public void gotoCreateCategory(ActionEvent event) throws IOException { Stage stage = new Stage(); stage.setTitle("Shop Management"); Pane myPane = null; myPane = FXMLLoader.load(getClass().getResource("createCategory.fxml")); Scene scene = new Scene(myPane); stage.setScene(scene); stage.show(); }
它确实打开了createCategory.fxml.但是,以前的createProduct.fxml面板不会关闭.我知道有一个叫做stage.close()的东西要做这个,但我不知道在哪里实现它,因为我没有从一开始就从主右侧传递场景.我想知道我应该怎么解决这个问题.
提前致谢.
解决方法
您必须在start方法中进行一些更改,例如..
public void start(Stage primaryStage) throws Exception { primaryStage.setTitle("Shop Management"); FXMLLoader myLoader = new FXMLLoader(getClass().getResource("createProduct.fxml")); Pane myPane = (Pane)myLoader.load(); CreateProductController controller = (CreateProductController) myLoader.getController(); controller.setPrevstage(primaryStage); Scene myScene = new Scene(myPane); primaryStage.setScene(myScene); primaryStage.show(); }
你的CreateProductController.java将是,
public class CreateProductController implements Initializable { Stage prevstage; public void setPrevstage(Stage stage){ this.prevstage = stage; } @Override public void initialize(URL location,ResourceBundle resources) { } public void gotoCreateCategory(ActionEvent event) throws IOException { Stage stage = new Stage(); stage.setTitle("Shop Management"); Pane myPane = null; myPane = FXMLLoader.load(getClass().getResource("createCategory.fxml")); Scene scene = new Scene(myPane); stage.setScene(scene); prevstage.close(); stage.show(); } }
原文地址:https://www.jb51.cc/java/123335.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。