为 JavaFX 中的每个场景使用独立方法
Using standalone methods for each scene in JavaFX
我正在尝试使用我的场景 home
作为 start
中的场景。
但是它不起作用,我得到的不是 300 x 300,而是一个空白的 900 x 400 屏幕。也许这是很容易检测到的东西,但我没有看到它?
private Scene home;
private Stage window;
public Scene home(Scene home) {
// build my scene
return home = new Scene(root, 300, 300);
}
@Override
public void start(Stage primaryStage) throws Exception {
window = primaryStage;
window.setScene(home);
window.show();
}
我正在尝试将我的场景创建为方法,这样我就可以让它们远离 start
。
计划稍后使用:btn.setOnAction(e -> window.setScene(anotherScene));
在场景之间切换,在此先感谢大家!
您永远不会调用 home
方法。因此,home
字段将保持 null
,这是您传递给 window.setScene
的值。
此外,我认为 home
方法是以一种奇怪的方式实现的:
public Scene home(Scene home) {
从未读取参数。
return home = new Scene(root, 300, 300);
这个赋值给方法参数,而不是给它之前的场景returns场景,没有效果,因为java是按值调用。
你可以这样实现:
private Scene home;
private Stage window;
public Scene home() {
if (home == null) {
// build my scene
home = new Scene(root, 300, 300)
// or maybe do this without testing, if the scene was created before???
}
return home;
}
@Override
public void start(Stage primaryStage) throws Exception {
window = primaryStage;
window.setScene(home()); // use the method here
window.show();
}
我正在尝试使用我的场景 home
作为 start
中的场景。
但是它不起作用,我得到的不是 300 x 300,而是一个空白的 900 x 400 屏幕。也许这是很容易检测到的东西,但我没有看到它?
private Scene home;
private Stage window;
public Scene home(Scene home) {
// build my scene
return home = new Scene(root, 300, 300);
}
@Override
public void start(Stage primaryStage) throws Exception {
window = primaryStage;
window.setScene(home);
window.show();
}
我正在尝试将我的场景创建为方法,这样我就可以让它们远离 start
。
计划稍后使用:btn.setOnAction(e -> window.setScene(anotherScene));
在场景之间切换,在此先感谢大家!
您永远不会调用 home
方法。因此,home
字段将保持 null
,这是您传递给 window.setScene
的值。
此外,我认为 home
方法是以一种奇怪的方式实现的:
public Scene home(Scene home) {
从未读取参数。
return home = new Scene(root, 300, 300);
这个赋值给方法参数,而不是给它之前的场景returns场景,没有效果,因为java是按值调用。
你可以这样实现:
private Scene home;
private Stage window;
public Scene home() {
if (home == null) {
// build my scene
home = new Scene(root, 300, 300)
// or maybe do this without testing, if the scene was created before???
}
return home;
}
@Override
public void start(Stage primaryStage) throws Exception {
window = primaryStage;
window.setScene(home()); // use the method here
window.show();
}