在我的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)
现在,当我运行应用程序时,窗口将最大化,标题栏可见,但任务栏不可见。我应该如何解决此问题,即使任务栏可见?
@JC997 有一个很好的答案,但我想改进。
使用 setWidth 和 setHeight 时,您不会阻止用户调整整个窗口的大小。在这种情况下,将setResizeable(false)与以下代码结合使用也无济于事。
您应该应用Min和Max值来实际实现您想要的,使用这个
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)
如果您希望舞台不调整大小和最大化,且任务栏可见,则可以使用以下代码:
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)
它的作用是寻找屏幕边界并考虑任务栏。
归档时间: |
|
查看次数: |
2453 次 |
最近记录: |