全屏模式下的分频器位置

时间:2015-11-27 16:58:56

标签: java javafx

我尝试使用各种参数setDividerPositions,但无论我在分割窗格中提供两个堆栈窗格的参数宽度相等。这是我的简单代码:

 SplitPane sp = new SplitPane();
 final StackPane sp1 = new StackPane();
 final StackPane sp2 = new StackPane();
 sp.getItems().addAll(sp1, sp2);
 sp.setDividerPositions(0.3); // tried (0.3, 0.7) and other variants but does not work     
 Scene scene = new Scene(sp);
 primaryStage.setFullScreen(true);
 primaryStage.setScene(scene);
 primaryStage.show();

所以,我不知道如何使其工作,因此左窗格的宽度为30%,右窗格占70%。谢谢!

PS。似乎JavaFX中存在一个错误,因为当我启动程序时,具有关闭和调整大小按钮的最顶部的栏是不可见的,但只有当我点击Escape时才会显示。 (但可能我做错了什么)

1 个答案:

答案 0 :(得分:1)

Jacobian,问题似乎是将FullScreen选项设置为true。 删除该语句,然后重试。此外,为场景指定初始高度和宽度值。您可以通过为其提供一些默认值,或通过获取用户屏幕大小并使用这些设置来执行此操作。 您可以通过设置主要舞台的最小高度和宽度来阻止用户调整应用程序的大小,尽管用户仍然可以移动应用程序。

        SplitPane sp = new SplitPane();
        final StackPane sp1 = new StackPane();
        final StackPane sp2 = new StackPane();
        sp.getItems().addAll( sp1 , sp2 );
        double height = Screen.getPrimary().getVisualBounds().getHeight();
        double width = Screen.getPrimary().getVisualBounds().getWidth();
        // Scene scene = new Scene( sp, width, height );
        Scene scene = new Scene( sp );
        primaryStage.setScene( scene );
        primaryStage.setMaximized( true );
        primaryStage.setMinHeight( height );
        primaryStage.setMinWidth( width );
        primaryStage.show();
        sp.setDividerPositions( 0.3 );