【问题标题】:Restore window size to original fixed size in JavaFx 8在 JavaFx 8 中将窗口大小恢复为原始固定大小
【发布时间】:2015-01-29 09:23:06
【问题描述】:

我有以下代码在单击最大化按钮时最大化窗口(标题栏中的绿色按钮)。但是,在最大化位置再次单击它时,它不会恢复到原始大小 (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());
        }
    });

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 此代码的行为与我发布的代码完全相同。当我最大化窗口时它打印为真,但当我再次单击最大化按钮时不打印任何内容。我有什么遗漏吗。我正在使用顶部所有按钮的 Normal Stage。
    • 在我的情况下它也打印false。您使用的是什么 Java 版本,操作系统?
    • Java 8,Mac。但如果仅适用于 Windows,它就足够了。让我试试赢。
    • 如果您认为这是一个 JavaFX 错误,您应该提交错误:javafx-jira.kenai.com
    • 完全 - 可能我会直接联系我认识的 ORCL 的开发人员 :)
    【解决方案2】:

    我用过这段代码

    @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);
        }
    

    希望对看到这篇文章的人有所帮助??

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-19
      • 2014-06-22
      • 2019-03-02
      • 2012-12-13
      • 1970-01-01
      • 2016-06-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多