如何将 JavaFX Stage/Frame 设置为最大化

问题描述 投票:0回答:6

我正在使用 JavaFX 2。我希望我的框架最大化打开,但我没有找到方法。我在网上搜索了一下但没有成功。对于舞台,我看到

setFullScreen()
setIconified()
,但我没有看到类似
setMaximized()
的东西。

frame stage javafx-2 maximize-window
6个回答
156
投票

Stage 类的 Java 8 实现提供了最大化属性,可以按如下方式设置:

primaryStage.setMaximized(true);

36
投票

在评估JavaFX 2.0 SDK示例中提供的Ensemble.jar的源代码时,当前实现窗口最大化的有效方法是

Screen screen = Screen.getPrimary();
Rectangle2D bounds = screen.getVisualBounds();

primaryStage.setX(bounds.getMinX());
primaryStage.setY(bounds.getMinY());
primaryStage.setWidth(bounds.getWidth());
primaryStage.setHeight(bounds.getHeight());

(您可以在WindowButtons.java中找到类似的代码)

“最大化”按钮仍然启用,单击它时,窗口会变大一点(Windows 操作系统)。此后“最大化”按钮将被禁用。在提供的示例中,标准按钮已被替换。也许这仍然是一个问题。


8
投票

尝试这个更简单的代码

primaryStage.setMaximized(true);
它填满了整个屏幕 。请注意,如果您删除最大化/最小化按钮,应用程序将填满整个屏幕并删除任务栏,因此请注意您的
initStyles
(如果有)


7
投票

更好地使用多屏兼容最大化逻辑:

// Get current screen of the stage      
ObservableList<Screen> screens = Screen.getScreensForRectangle(new Rectangle2D(stage.getX(), stage.getY(), stage.getWidth(), stage.getHeight()));

// Change stage properties
Rectangle2D bounds = screens.get(0).getVisualBounds();
stage.setX(bounds.getMinX());
stage.setY(bounds.getMinY());
stage.setWidth(bounds.getWidth());
stage.setHeight(bounds.getHeight());

0
投票

在编写 getVisualBounds 逻辑后,我尝试编写 primaryStage.setMaximized(true); 。我创建了一个如下所示的方法:

public static void maximizeStage() {
    Screen screen = Screen.getPrimary();
    Rectangle2D bounds = screen.getVisualBounds();

    primaryStage.setX(bounds.getMinX());
    primaryStage.setY(bounds.getMinY());
    primaryStage.setWidth(bounds.getWidth());
    primaryStage.setHeight(bounds.getHeight());

    primaryStage.setMaximized(true); // Added setMaximized()
}

这对我有用。它创建一个与屏幕大小相同的未最大化窗口,然后继续将其真正最大化。


-7
投票

用它来删除最小化、最大化按钮:

primaryStage.initStyle(StageStyle.UTILITY);

primaryStage 是您的 Stage 对象。

© www.soinside.com 2019 - 2024. All rights reserved.