在构建此应用程序时多次遇到此问题,现在实际上阻碍了我们的功能。当我更改影响该阶段的一行代码时,我的其他开发人员(使用mac)尝试运行我们的应用程序时,问题首先出现了:
Screen screen = Screen.getPrimary();
Rectangle2D bounds = screen.getVisualBounds();
overallStage.setX(bounds.getMinX());
overallStage.setY(bounds.getMinY());
overallStage.setWidth(bounds.getWidth());
overallStage.setHeight(bounds.getHeight());
这是为了允许用户登录后最大化屏幕。在mac用户登录后,舞台将最小化到左下角的一个小窗口然后消失。类似的事情现在发生了我做的新增加。
我做了这个添加,在应用程序中加入了一个侧面菜单。如您所见,我将整个场景包装在Stack Pane中,然后将Anchor窗格(请参阅层次结构)与侧面菜单的外部锚窗格相关联。现在完全相同的事情发生在最小化和消失在两个不同的Mac上,Windows完全没问题。
有些东西让我相信一些布局和舞台设置与Mac不兼容,因为它只是在我包裹主场景之后再次发生,有没有人遇到过这个问题或知道如何修复它?
答案 0 :(得分:1)
设置阶段值时,您应该:
//Initialize Group root for Main Node
Group root = new Group();
//Initialize Scene on group root with specific sizes
Scene scene = new Scene(root, 450, 250);
//Initialize BorderPane and Bind the layout with the scene size.
BorderPane borderPane = new BorderPane();
borderPane.prefHeightProperty().bind(scene.heightProperty());
borderPane.prefWidthProperty().bind(scene.widthProperty());
//Set the TabPane to be centered
borderPane.setCenter(tabPane);
//Adds Layout to Main Node
root.getChildren().add(borderPane);
这会自动更改窗口大小,具体取决于屏幕的分辨率以及所有控件的侧面。因此,允许您使JavaFX与所有操作系统兼容。
好运。如果您需要任何进一步的帮助,请与我们联系。 :)