首页 文章

如何在按钮中添加方法以在JavaFX中切换场景

提问于
浏览
0

我创建了两个java类,它们有一个静态方法,在设置了所需标签和按钮的所有属性后返回一个AnchorPane . 例如:

class HomePageScene {
    static AnchorPane getHomePageScene() {
        //some code
        //a button which is to be clicked to go to Login Page
        //some code
    }
}

class LoginPageScene {
    static AnchorPane getLoginPageScene() {
        //some code
    }
}

还有另一个有 main() 的课程 .

public class JavaFXEventDemo extends Application {
    public static void main(String[] args) {
        launch(args);
    }
    public void start(Stage myStage) {
        myStage.setTitle("Program Windiw");
        AnchorPane HomePane = HomePageScene.getHomePageScene();
        AnchorPane LoginPane = LoginPageScene.getLoginPageScene();

        Scene HomePage = new Scene(HomePane, 400.0, 300.0);
        Scene LoginPage = new Scene(LoginPane, 400.0, 300.0);

        myStage.setScene(HomePage);
        myStage.show();
    }
}

首先,我将HomePage设置为舞台上的场景 . 在屏幕上有一个按钮,当我点击时,我希望场景到LoginPage . 我该怎么做呢?所有这三个类都在不同的文件中 . 我尝试设置onAction()方法,但是在那里,handle()方法的返回类型是void,而我需要返回一个AnchorPane .

1 回答

  • 2

    绑定按钮的功能(onAction) . 在这个函数中,调用主类中的一个函数来加载你想要的场景(void javafx.scene.Scene.setRoot(Parent value))?


    编辑:

    我的意思是:

    public class JavaFXEventDemo extends Application {
    
        private static Scene HomePage;
        private static Scene LoginPage;
        private static Stage myStage;
    
        public static void main(String[] args) {
            launch(args);
        }
        public void start(Stage myStage) {
            JavaFXEventDemo.myStage = myStage;
            myStage.setTitle("Program Windiw");
    
            AnchorPane HomePane = HomePageScene.getHomePageScene();
            AnchorPane LoginPane = LoginPageScene.getLoginPageScene();
    
            HomePage = new Scene(HomePane, 400.0, 300.0);
            LoginPage = new Scene(LoginPane, 400.0, 300.0);
    
            loadHomePage();
            myStage.show();
        }
    
        public static void loadHomePage(){
            JavaFXEventDemo.myStage.setScene(HomePage);
        }
    
        public static void loadLoginPage(){
            JavaFXEventDemo.myStage.setScene(LoginPage);
        }
    }
    

    只需在按钮上调用loadXXXXPage()即可 .

相关问题