我的类中使用了start方法来启动javaFX的primaryStage。
然而,我有另一个名为change_screen(int n)的函数,它将根据传递给它的数字创建一个新场景,并为该新场景执行primaryStage.setScene()和.show()。
唯一的问题是在start函数中声明了primaryStage,所以我无法在change_screen()函数中访问它。
我将如何解决这个问题?我已经阅读了整本java教科书,所以我对大多数概念都有所了解,但它并没有深入研究javaFx,所以我不知道如何处理多个场景。
我有一个游戏,根据他们正在查看的菜单,屏幕会有所不同,那么更容易改变场景的最佳方法是什么?我想尽可能使用primaryStage,因为它已经实例化了,如果我相信我理解javaFX,如果知道了一个知道的阶段,那么这个新窗口是否正确?
如果我的方法有误,那么在同一个窗口中通过多个场景进行更改的正确方法是什么?
答案 0 :(得分:2)
你不能在外部声明一个变量并将start方法中创建的阶段分配给它吗?
override func viewDidLoad() {
super.viewDidLoad()
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard")
view.addGestureRecognizer(tap)
}
func dismissKeyboard() {
view.endEditing(true)
}
答案 1 :(得分:0)
而不是声明你的Pane / StackPane / BorderPane /等。在start方法内部,在Main Class中进行。
private static Pane somePane = new Pane();
public static void setSomePane(Pane p) {
somePane = p;
}
public static Pane getSomePane() {
return somePane;
}
然后,如果您试图控制"主要阶段"中显示的内容?从另一个班级,你总是可以用...设置它。
Main.setSomePane(new Pane());
实际上,您可以控制主窗口,因为您可以控制它显示的窗格。
从那时起,如果你想要真正访问主要阶段,你可以按照James_D的说法进行操作并调用主窗口,如下所示...
Main.getRoot().getScene().getWindow();
希望有所帮助