【问题标题】:JavaFx keep window size after user resizesJavaFx 在用户调整大小后保持窗口大小
【发布时间】:2015-02-11 17:21:24
【问题描述】:

我目前使用以下代码在场景之间切换。我想在窗口之间切换并保持窗口大小(因此当用户通过调整窗口大小手动更改窗口大小时,即使在场景更改后它也会保持所选大小)。

Scene scene = new Scene(pane); // new Scene(pane, userChosenWidth??, userChosenHeight??); stage.setScene(scene); stage.sizeToScene();

有谁知道如何做到这一点?

【问题讨论】:

标签: java javafx javafx-2 fxml scene


【解决方案1】:

Stage 中设置宽度和高度对我有用。

double prevWidth = stage.getWidth();
double prevHeight = stage.getHeight();
stage.setScene(scene);
stage.setHeight(prevHeight);
stage.setWidth(prevWidth);

【讨论】:

    【解决方案2】:

    我创建了这个类:

    public class AppSize {
    
        private static final String HEIGHT = "Height";
        private static final String WIDTH = "Width";
        private static final String Y = "Y";
        private static final String X = "X";
    
        private final static Preferences prefs =  Preferences.userNodeForPackage(AppSize.class);
    
        public static void setSize(Stage stage) {
    
        Optional.ofNullable(prefs.getDouble(X, -1)).filter(x->x>=0).ifPresent(stage::setX);
        Optional.ofNullable(prefs.getDouble(Y, -1)).filter(y->y>=0).ifPresent(stage::setY);
        Optional.ofNullable(prefs.getDouble(WIDTH, -1)).filter(width->width>=0).ifPresent(stage::setWidth);
        Optional.ofNullable(prefs.getDouble(HEIGHT, -1)).filter(height->height>=0).ifPresent(stage::setHeight);
    
        stage.setOnCloseRequest(
                e->{
    
                    if(stage.isFullScreen()) {
                        return;
                    }
    
                    prefs.putDouble(X, stage.getX());
                    prefs.putDouble(Y, stage.getY());
                    prefs.putDouble(WIDTH, stage.getWidth());
                    prefs.putDouble(HEIGHT, stage.getHeight());
                });
        }
    }
    

    它的用途:

     public void start(Stage stage) throws Exception {
        //...
        AppSize.setSize(stage);
        stage.show();
    }
    

    【讨论】:

      【解决方案3】:

      只需在当前的Scene 上调用getWidth()getHeight()。如果您没有对当前场景的引用,可以使用stage.getScene() 获取。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-24
        • 1970-01-01
        • 2015-06-01
        • 2018-11-01
        • 2017-03-25
        • 2014-05-24
        相关资源
        最近更新 更多