首页 文章

在场景JavaFX之间切换

提问于
浏览
0

我在class1中创建了一个场景,然后在class2中创建了一个scene2 . 如何在它们之间切换?

public class class1 extends Application{

Stage window1;
BorderPane layout1;
Scene scene1;

public static void main(String[] args) {
    launch(args);
}

@Override
public void start(Stage primaryStage) throws Exception {
    window1 = primaryStage;
    window.setTitle("Stage 1");

    // And here is a button which switchs between scenes or stages,
    //i dont know what is better.So:

button.setOnAction(e -> ?????????)



    scene1 = new Scene(layout1, 800,600);
    window1.show();
}
}

这是我有另一个场景的第二堂课 .

public class class2 extends Application{

Stage window2;
BorderPane layout2;
Scene scene2;

public static void main(String[] args) {
    launch(args);
}

@Override
public void start(Stage primaryStage) throws Exception {
    window2 = primaryStage;
    window2.setTitle("Stage 2");

    scene2 = new Scene(layout, 800,600);
    window2.show();
}
}

1 回答

  • 0

    我编写了这个控制器来跟踪不同的场景图并切换我的舞台内容,没有麻烦 .

    也许你想看看FXML:http://docs.oracle.com/javafx/2/fxml_get_started/why_use_fxml.htm#CHDCHIBE

    public class ScreenController {
        private HashMap<String, Pane> screenMap = new HashMap<>();
        private Scene main;
    
        public ScreenController(Scene main) {
            this.main = main;
        }
    
        protected void addScreen(String name, Pane pane){
             screenMap.put(name, pane);
        }
    
        protected void removeScreen(String name){
            screenMap.remove(name);
        }
    
        protected void activate(String name){
            main.setRoot( screenMap.get(name) );
        }
    }
    

    所以我可以写:

    ScreenController screenController = new ScreenController(scene);
    screenController.add("layout1", layout1 );
    screenController.add("layout2", layout2 );
    screenController.add("testSwitch", FXMLLoader.load(getClass().getResource( "TestSwitch.fxml" )));
    
    button.setOnAction(e -> screenController.activate("layout2"));
    

    这是全屏应用程序的解决方法,每次舞台切换场景时都会显示MacOS全屏转换 .

相关问题