我正在开发一个迷你应用程序,我需要在全屏上同时向用户显示 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();
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)