代码之家  ›  专栏  ›  技术社区  ›  Robert

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

  •  0
  • Robert  · 技术社区  · 8 年前

    我正在开发一个JavaFX应用程序(使用Java版本8u51),我做到了 resizable 但我现在的默认行为并不是我想要的。问题是我能够 resize Stage 比我的屏幕还大。有没有办法限制 调整大小 到当前监视器分辨率?我必须提到的是,我需要这个工作在任何分辨率和任何屏幕大小。

    2 回复  |  直到 8 年前
        1
  •  5
  •   perf coder    8 年前

    在这种情况下,您需要设置应用程序启动时阶段的实际大小以及允许的最大可调整大小。

    @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() .

        2
  •  3
  •   James_D    8 年前

    这个 Screen API 使您能够在运行时找到可用的不同物理屏幕 bounds (包括尺寸)和分辨率 dots per inch . 然后可以设置最大值 width 和 height 在你的舞台上。