全屏改变场景

时间:2018-03-11 18:51:46

标签: javafx fullscreen modality

我在这里阅读了几个与我的问题相关的问题/解决方案。但似乎没什么用。

所以我在全屏模式下有一个主流,说如果我点击一个按钮它会改变场景。但舞台似乎显示任务栏。我也通过将其添加到所有场景方法来解决了这个问题。

stage.setFullScreen(false);
        stage.setFullScreen(true);

但是,场景的过渡并不那么流畅。首先它进入桌面并返回全屏..这不是理想的解决方案。

这是我的初级阶段代码:

 public static Stage stage;
private static AnchorPane mainLayout;

@Override
public void start(Stage primaryStage) throws IOException 
    {

        Main.stage = primaryStage;
        Main.stage.setTitle("Raven App");
        stage.initStyle(StageStyle.UNDECORATED);
        stage.setFullScreen(true);
        stage.setFullScreenExitKeyCombination(KeyCombination.NO_MATCH);
        Main.showMain();

    }

这是我改变场景的代码:

   public static void UserLogin() throws IOException
{



        FXMLLoader loader=new FXMLLoader();
        loader.setLocation(Main.class.getResource("page/UserHomeLogin.fxml"));
        mainLayout=loader.load();
        Scene scene=new Scene(mainLayout);
        stage.setScene(scene);
        stage.show();


    } 

我不知道这是不是一个错误。但我想如果你把你的主要舞台设置为全屏。无论场景如何,都应全屏显示。

另外,如果我在全屏模式下有一个主舞台..而且在全屏模式下不是第二阶段。如果我点击按钮显示第二阶段,初级阶段似乎消失了。我想在主要阶段的顶部显示辅助页面,除非关闭辅助页面,否则主要阶段不应该是可点击的。

显示第二阶段的代码:

 public static void PasswordVerify() throws IOException
{


Stage stage = new Stage();
Parent root = FXMLLoader.load(Main.class.getResource("page/PassConfirm.fxml"));
stage.setScene(new Scene(root));
stage.setTitle("popup window");
stage.initModality(Modality.APPLICATION_MODAL);
stage.showAndWait();
stage.show();


    }

1 个答案:

答案 0 :(得分:2)

不要创建新场景,只需更改现有场景的根目录:

public static void UserLogin() throws IOException {
    FXMLLoader loader=new FXMLLoader();
    loader.setLocation(Main.class.getResource("page/UserHomeLogin.fxml"));
    mainLayout=loader.load();
    stage.getScene().setRoot(mainLayout);
    // or just 
    // scene.setRoot(mainLayout);
    // if you already have a reference to the scene
} 

你问的第二件事实际上是不可能的。在JavaFX中,在许多平台上"全屏模式"真正实现为"独家屏幕模式&#34 ;;所以有一个独特的窗口可见。所以你需要完全另外一个解决方案,根本不需要显示一个新窗口。