某些JavaFX布局是否与Mac计算机不兼容?

时间:2016-09-29 07:58:48

标签: java layout javafx scenebuilder

在构建此应用程序时多次遇到此问题,现在实际上阻碍了我们的功能。当我更改影响该阶段的一行代码时,我的其他开发人员(使用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用户登录后,舞台将最小化到左下角的一个小窗口然后消失。类似的事情现在发生了我做的新增加。

enter image description here

我做了这个添加,在应用程序中加入了一个侧面菜单。如您所见,我将整个场景包装在Stack Pane中,然后将Anchor窗格(请参阅层次结构)与侧面菜单的外部锚窗格相关联。现在完全相同的事情发生在最小化和消失在两个不同的Mac上,Windows完全没问题。

有些东西让我相信一些布局和舞台设置与Mac不兼容,因为它只是在我包裹主场景之后再次发生,有没有人遇到过这个问题或知道如何修复它?

1 个答案:

答案 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与所有操作系统兼容。

好运。如果您需要任何进一步的帮助,请与我们联系。 :)