发布于2023-11-05 21:52 阅读(1130) 评论(0) 点赞(16) 收藏(4)
我实际上想构建一个从一个 fxml 到另一个 fx 应用程序(使用此过程:fxml 编号 1 加载,然后单击并进行另一次加载)。
我已经在我的主类中设置了静态舞台并一次又一次地使用它。
根据 RAM 中堆栈空间的限制这是一个好主意吗?或者有更好的方法吗?
这些是我的代码的一部分:
public class Main extends Application {
public static Stage stage;
@Override
public void start(Stage primaryStage) throws Exception{
stage=primaryStage;
Parent root = FXMLLoader.load(getClass().getResource("MainWidget.fxml"));
stage.setTitle("Welcome");
stage.setScene(new Scene(root, 300, 275));
stage.show();
}
我的控制器是(加载另一个 fxml!!)
public void someButtonController{
Parent root = FXMLLoader.load(getClass().getResource("/View/ShowWidget.fxml"));
Scene scene = new Scene(root,300,300);
Main.stage.setScene(scene);
Main.stage.show();}
Stage
我根本不会揭露。Main
这样做会将您的 FXML-Controller 对与您的类耦合起来,并防止您在没有该类的情况下使用它。
相反,做类似的事情
@FXML
private Button someButton ;
// ...
public void someButtonController{
Window window = someButton.getScene().getWindow();
if (window instanceof Stage) {
Parent root = FXMLLoader.load(getClass().getResource("/View/ShowWidget.fxml"));
Scene scene = new Scene(root,300,300);
Stage stage = (Stage) window ;
stage.setScene(scene);
stage.show(); // isn't it necessarily showing already?
}
}
在这里,我假设控制器是 FXML 文件的控制器,该文件代表您尝试访问的Node
中显示的 s 。Stage
如果情况并非如此,您仍然可以执行类似的操作,尽管会更复杂。
作者:黑洞官方问答小能手
链接:http://www.javaheidong.com/blog/article/677460/a7770aa569186fc43592/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!