在JavaFx 8中将窗口大小恢复为原始固定大小

时间:2015-01-29 09:23:06

标签: javafx resize window javafx-8 maximize-window

我有以下代码,当单击最大化按钮时,窗口最大化(标题栏中的绿色按钮)。但是,在最大化位置再次单击时,它不会恢复到原始大小(900x600)。我看到只有左侧缩小了。

//set the original size        
final Scene homeScene = new Scene(homePane,900,600);

...

    primaryStage.maximizedProperty().addListener(new ChangeListener<Boolean>() {
        @Override
        public void changed(ObservableValue<? extends Boolean> ov, Boolean t, Boolean t1) {

            primaryStage.setX(bounds.getMinX());
            primaryStage.setY(bounds.getMinY());
            primaryStage.setWidth(bounds.getWidth());
            primaryStage.setHeight(bounds.getHeight());
        }
    });

如何取回原来的位置?再次单击最大化按钮时不会触发“已更改”方法,否则我将以编程方式设置原始大小。

2 个答案:

答案 0 :(得分:0)

以下代码可以很好地监听Stage的最大化状态:

primaryStage.maximizedProperty().addListener((w,o,n)->System.out.println(n));

正在使用自定义(未修饰)Stage,那么您可能需要查看已完成此操作的Undecorator

答案 1 :(得分:0)

我使用了这段代码

@FXML
    private void btnMaximize(MouseEvent event) {
        Stage s = (Stage) borderpane.getScene().getWindow();
        s.setFullScreen(true);
    }
@FXML
    private void btnRestoreDown(MouseEvent event) {
        Stage s = (Stage) borderpane.getScene().getWindow();
        s.setFullScreen(false);
    }

希望它可以帮助看到此帖子的人