在我的JavaFX FXML应用程序中,当我将resizable设置为false并最大化为true时,窗口变得最大化但任务栏被隐藏。我在Windows 7 64位上使用Netbeans 8.0.2和JDK 1.8.60
在Netbeans中,我按照步骤创建了一个新的JavaFX FXML应用程序。对于生成的默认代码,我在start函数中添加了以下两行。
stage.setResizable(false);
stage.setMaximized(true);
因此最终的启动功能如下
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();
}
现在,当我运行应用程序时,窗口最大化,标题栏可见,但任务栏不可见。我应该如何解决这个问题,即让任务栏可见?
答案 0 :(得分:2)
@ JC997有一个很好的答案,但我想改进。
使用setWidth和setHeight时,不会阻止用户调整整个窗口的大小。在这种情况下,将 setResizeable(false)与以下代码组合起来也不会有帮助。
您应该应用最低和最高值来实际达到您想要的效果,请使用此
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());
答案 1 :(得分:1)
如果您希望舞台无法调整大小并最大化,任务栏可见,您可以使用此代码:
Rectangle2D primaryScreenBounds = Screen.getPrimary().getVisualBounds();
stage.setX(primaryScreenBounds.getMinX());
stage.setY(primaryScreenBounds.getMinY());
stage.setWidth(primaryScreenBounds.getWidth());
stage.setHeight(primaryScreenBounds.getHeight());
这样做,正在寻找屏幕边界,并将任务栏考虑在内。