为 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();
}