netbeans-使用JavaFx Scene Builder 2.0“全屏”同时显示两个窗口

我正在使用一个微型应用程序,在该应用程序中我需要同时向用户显示2个窗口,但要在全屏模式下显示(该应用程序将为双屏用户使用).

我正在NetBeans 8.0.1上使用JavaFx Scene Builder 2.0

我试过了,但是只有第二个窗口全屏显示.

public void showTwoScreens() {
    try {
        Parent root = FXMLLoader.load(getClass().getResource("ClientsOperationsWindow.fxml"));
        Scene scene = new Scene(root);

        globalStage.setScene(scene);
        globalStage.setFullScreen(true);
        globalStage.setResizable(true);
        globalStage.show();

        Stage anotherStage = new Stage();
        Parent secondRoot = FXMLLoader.load(getClass().getResource("ClientsSearchWindow.fxml"));

        Scene secondStage = new Scene(secondRoot);
        secondStage.setScene(anotherScene);
        secondStage.setFullScreen(true);
        secondStage.show();

    } catch (Exception ex) {
        System.out.println(ex.getMessage());
    }
}

是否可以全屏显示两个窗口?

谢谢!

最佳答案
我认为您不能同时在两台显示器中以全屏方式设置两个阶段,但是通过设置阶段尺寸,您可以获得相同的结果.

为此,我们将使用javafx.stage.Screen来获取连接的每个不同监视器的特征.然后,我们将fxml文件加载到每个场景,并在其舞台上显示每个场景.通过Screen.getBounds(),我们现在参考了主屏幕,该矩形的原点和尺寸.因此,我们将每个阶段的边界设置为这些矩形的边界.最后,我们将样式设置为未经装饰.现在唯一缺少的功能是退出“全屏”模式组合键.

private Screen secondaryScreen;

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

    Screen primaryScreen = Screen.getPrimary();

    Parent root = FXMLLoader.load(getClass().getResource("Screen1.fxml"));
    Scene scene = new Scene(root);
    primaryStage.setScene(scene);
    Rectangle2D bounds = primaryScreen.getBounds();
    primaryStage.setX(bounds.getMinX());
    primaryStage.setY(bounds.getMinY());
    primaryStage.setWidth(bounds.getWidth());
    primaryStage.setHeight(bounds.getHeight());
    primaryStage.initStyle(StageStyle.UNDECORATED);
    primaryStage.show();

    // look for a second screen
    Screen.getScreens().stream()
            .filter(s->!s.equals(primaryScreen))
            .findFirst().ifPresent(s->secondaryScreen = s);

    if(secondaryScreen!=null){
        Stage secondaryStage = new Stage();
        Parent root2 = FXMLLoader.load(getClass().getResource("Screen2.fxml"));
        Scene scene2 = new Scene(root2);
        secondaryStage.setScene(scene2);
        Rectangle2D bounds2 = secondaryScreen.getBounds();
        secondaryStage.setX(bounds2.getMinX());
        secondaryStage.setY(bounds2.getMinY());
        secondaryStage.setWidth(bounds2.getWidth());
        secondaryStage.setHeight(bounds2.getHeight());
        secondaryStage.initStyle(StageStyle.UNDECORATED);
        secondaryStage.show();  
    } 
}

转载注明原文:netbeans-使用JavaFx Scene Builder 2.0“全屏”同时显示两个窗口 - 代码日志