在JavaFX中为每个场景使用独立方法

在JavaFX中为每个场景使用独立方法,java,javafx,methods,scene,stage,Java,Javafx,Methods,Scene,Stage,我正在尝试使用我的场景,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

我正在尝试使用我的场景,
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(另一个场景)),提前谢谢大家

您从不调用
home
方法。因此,
home
字段将保持
null
,这是传递给
window.setScene
的值

此外,我将调用
home
方法,它以一种奇怪的方式实现:

public Scene home(Scene home) {
永远不会读取该参数

    return home = new Scene(root, 300, 300);
这会将值分配给方法参数,而不是在场景返回场景之前分配给场景,因为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();
}