从其他场景切换后,场景在舞台上偏离了中心

时间:2018-11-16 23:22:38

标签: java css javafx scene stage

我已经尝试了很多方法来使该场景适合舞台(就像我的应用程序中的其他场景一样),但是我无法弄清楚。

我目前正在使用按钮和控制器来切换场景,目的是保持MVC格式,因此我正在使用stage.setScene(new Scene(root pane), desired width, desired height)行。

但是,切换场景带来的闪烁破坏了我应用程序的无缝性。

我尝试了其他建议,例如stage.centerOnScreen(),但这似乎使整个阶段的视线移开了(减少了一半的阶段),我也尝试了stage.sizeToScreen(),但这似乎没有什么区别

理想情况下,我想使用stage.getScene().setRoot(pane),但场景似乎会更改大小或创建白色边框,而不是调整舞台大小以适合场景(如图所示)。

如果到目前为止我还没有清楚自己的意思,那我就是在努力使场景适应舞台。设置为根时,场景的根窗格是所需的大小,但是由于某种原因,场景会更改大小。

这就是我希望场景适合舞台(这是场景1)

enter image description here

但是这是当我将场景的根目录更改为下一页时发生的情况。

enter image description here

因此,理想情况下,我正在寻找一种使用setRoot(pane),使场景适合舞台或使用setScene(scene)而不会闪烁的方法。

代码示例:

在我的一个控制器中,我有此功能(按预期工作):

public void handle(MouseEvent event) {
    if (event.getSource() instanceof Button) {
        Button sourceButton = (Button)event.getSource();
        Stage primaryStage = (Stage ((Node)event.getSource()).getScene().getWindow();

        if (sourceButton.getId().equals("back-button")) {
            primaryStage.getScene().setRoot(view.getWelcomePane());
        }
    }
}

在视图中:

public Pane getWelcomePane() {
    return new BorderPane(bpWelcomeMain); // bpWelcomeMain is the border pane that contains all the page components
}

在另一个控制器中,当出现我想要的方式时,我必须使用它(但这会产生闪烁):

public void handle(MouseEvent event) {

    if (event.getSource() instanceof Button) {

        Button clickedButton = (Button)event.getSource();
        Stage primaryStage = (Stage)((Node)event.getSource()).getScene().getWindow();

        if (clickedButton.getId().equals("create-button")) {
            primaryStage.setScene(view.getCreateScene());
        }
}

在视图中:

public Scene getCreateScene() {
    return new Scene(bpCreateMain, 1500, 750); // bpCreateMain is the border pane that contains all the page components
}

但是,我想使用.setRoot()而不是如第一个示例中所示的setScene()来消除闪烁,但还需要使其如预期的那样出现(因此,我想在其中使用我的getCreatePane()方法此视图-与getWelcomePane()而不是getCreateScne()类似,方法实际上是相同的,因此我不确定为什么它不起作用。

0 个答案:

没有答案