停止调整大小超出屏幕分辨率范围(JavaFX)

时间:2017-11-01 12:26:53

标签: java css user-interface javafx

我正在开发一个JavaFX应用程序(使用Java版本8u51)并且我将其设为resizable但是我现在拥有的默认行为不是所需的行为。问题是我能够resize超出屏幕分辨率范围。换句话说,我可以使Stage大于我的屏幕。有没有办法将resize限制为当前的显示器分辨率?我必须提到我需要这个才能处理任何分辨率和任何屏幕尺寸。

2 个答案:

答案 0 :(得分:4)

  

是的,但是如果用户想要再次调整它...更小,应该允许此操作。

在这种情况下,您需要在启动应用时设置舞台的实际大小,并允许最大允许调整大小。

@Override
public void start(Stage stage) throws Exception {

    Scene scene = new Scene(new Pane());
    stage.setScene(scene);

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

    stage.initStyle(StageStyle.DECORATED);
    stage.setX(bounds.getMinX());
    stage.setY(bounds.getMinY());
    stage.setWidth(bounds.getWidth());
    stage.setHeight(bounds.getHeight());
    stage.setMaxWidth(bounds.getWidth() * 2);
    stage.show();
}

在这里:

stage.setWidth(bounds.getWidth());
stage.setHeight(bounds.getHeight());
stage.setMaxWidth(bounds.getWidth() * 2);

您可以设置所需的尺寸。您甚至可以按stage.setMinWidth()和/或stage.setMinHeight()设置舞台的最小尺寸。

答案 1 :(得分:2)

通过Screen API,您可以找到运行时可用的不同物理屏幕,bounds(包括其大小)和dots per inch中的分辨率。然后,您可以相应地设置舞台上的最大widthheight

(我并不十分清楚你的意思是"将其调整到超出屏幕分辨率范围",但这应该会为您提供API来实现您想要做的事情。 )