Javafx阶段可调整大小的false和最大化的true隐藏任务栏

Din*_*esh 5 java javafx-8

在我的JavaFX FXML应用程序中,当我将resizable设置为false并最大化设置为true时,窗口变为最大化,但任务栏被隐藏。我在Windows 7 64位和JDK 1.8.60上使用Netbeans 8.0.2

在Netbeans中,我按照步骤创建了一个新的JavaFX FXML应用程序。对于生成的默认代码,我在启动函数中添加了以下两行。

stage.setResizable(false);
stage.setMaximized(true);
Run Code Online (Sandbox Code Playgroud)

因此,最终的启动功能如下

public void start(Stage stage) throws Exception {
    Parent root = FXMLLoader.load(getClass().
        getResource("FXMLDocument.fxml"));

    Scene scene = new Scene(root);

    stage.setScene(scene);
    stage.setResizable(false);
    stage.setMaximized(true);
    stage.show();
}
Run Code Online (Sandbox Code Playgroud)

现在,当我运行应用程序时,窗口将最大化,标题栏可见,但任务栏不可见。我应该如何解决此问题,即使任务栏可见?

hom*_*rrr 5

@JC997 有一个很好的答案,但我想改进。

使用 setWidth 和 setHeight 时,您不会阻止用户调整整个窗口的大小。在这种情况下,将setResizeable(false)与以下代码结合使用也无济于事。

您应该应用MinMax值来实际实现您想要的,使用这个

Rectangle2D primaryScreenBounds = Screen.getPrimary().getVisualBounds();
stage.setX(primaryScreenBounds.getMinX());
stage.setY(primaryScreenBounds.getMinY());

stage.setMaxWidth(primaryScreenBounds.getWidth());
stage.setMinWidth(primaryScreenBounds.getWidth());

stage.setMaxHeight(primaryScreenBounds.getHeight());
stage.setMinHeight(primaryScreenBounds.getHeight());
Run Code Online (Sandbox Code Playgroud)


JC9*_*C97 4

如果您希望舞台不调整大小和最大化,且任务栏可见,则可以使用以下代码:

Rectangle2D primaryScreenBounds = Screen.getPrimary().getVisualBounds();
stage.setX(primaryScreenBounds.getMinX());
stage.setY(primaryScreenBounds.getMinY());
stage.setWidth(primaryScreenBounds.getWidth());
stage.setHeight(primaryScreenBounds.getHeight());
Run Code Online (Sandbox Code Playgroud)

它的作用是寻找屏幕边界并考虑任务栏。