首页 > 解决方案 > 更改舞台宽度/高度然后切换场景不会更新新场景中的 UI

问题描述

我有两个场景 A 和 B 以及一个舞台。

如果我在场景 A 中并更改舞台宽度/高度,它将更新 UI 以将其缩放到新的舞台尺寸。

但是,如果我从那里切换到场景 B,场景 B 中的 UI 将不会更新,直到我通过调整屏幕大小或打开和关闭舞台等操作强制更新。

当舞台宽度/高度发生变化时,有没有办法更新所有场景?由于一次只能将一个场景设置到舞台上,因此当前的更改不会自动应用于所有场景。

这是一个最小的复制示例。

    @Override
    public void start(Stage stage) throws Exception {
        
          stage.setWidth(400);
          stage.setHeight(400);
        
          Scene scene1, scene2;
          
          BorderPane layout1 = new BorderPane();
          Button buttontosecond = new Button("go to second page");
          layout1.setCenter(buttontosecond);
          scene1 = new Scene(layout1, stage.getWidth(), stage.getHeight());
          
        
          BorderPane layout2 = new BorderPane();
          Button buttonsize = new Button("change size");   
          Button buttontomain = new Button("back to main");
          VBox vbox = new VBox(buttonsize, buttontomain);
          
          
          vbox.setAlignment(Pos.CENTER);

          
          layout2.setCenter(vbox);
          scene2 = new Scene(layout2, stage.getWidth(), stage.getHeight());
          
          buttontomain.setOnAction(actionEvent -> {stage.setScene(scene1);});
          buttontosecond.setOnAction(actionEvent -> {stage.setScene(scene2);});
          buttonsize.setOnAction(actionEvent -> {stage.setWidth(200);stage.setHeight(200);});


          stage.setScene(scene1);
          stage.show();

    }


标签: javajavafx

解决方案


请勿以这种方式进行场景切换。而是实施单场景根切换系统,如本文的答案所示。我没有设法让上面的代码工作,但我发现这是我的双显示器设置的原因。将游戏窗口拖到另一个显示器时,它工作正常。


推荐阅读