【发布时间】:2011-10-15 10:12:42
【问题描述】:
我正在使用 JavaFX 2。我希望我的框架以最大化方式打开,但我没有看到任何方法。我在互联网上搜索了一下没有成功。对于舞台,我看到了setFullScreen() 和setIconified(),但我没有看到像setMaximized() 这样的东西。
【问题讨论】:
标签: frame stage javafx-2 maximize-window
我正在使用 JavaFX 2。我希望我的框架以最大化方式打开,但我没有看到任何方法。我在互联网上搜索了一下没有成功。对于舞台,我看到了setFullScreen() 和setIconified(),但我没有看到像setMaximized() 这样的东西。
【问题讨论】:
标签: frame stage javafx-2 maximize-window
Stage类的Java 8实现提供了一个最大化属性,可以设置如下:
primaryStage.setMaximized(true);
【讨论】:
stage.hide(); 隐藏舞台,然后使用stage.setMaximized(true); 隐藏舞台,然后我致电stage.show(); 并解决了它。但无论如何感谢您的提示! :)
在评估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 操作系统)。在此之后,“最大化”按钮被禁用。在提供的示例中,标准按钮被替换。也许这仍然是一个问题。
【讨论】:
Screen.getScreens() 并找到窗口所在的那个。 JavaFX 在很多方面都像 Swing 一样 :-)
更好地使用多屏兼容最大化逻辑:
// 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());
【讨论】:
试试这个更简单的代码
primaryStage.setMaximized(true);
它填满了整个屏幕
.请注意,如果您删除最大化/最小化按钮,该应用程序将填满整个屏幕并删除任务栏,因此请记住您的 initStyles(如果有)
【讨论】:
setMaximized,再用getVisualBounds设置舞台的X、Y、宽高。
使用它来删除最小化、最大化按钮:
primaryStage.initStyle(StageStyle.UTILITY);
primaryStage 是您的 Stage 对象。
【讨论】: