如何防止将JavaFX窗口最大化为全屏?

时间:2014-08-17 23:19:43

标签: javafx javafx-2 javafx-8

我做到了......

myStage.initStyle(StageStyle.UTILITY);

适用于删除最大化按钮,但有人仍然可以双击窗口标题栏(在Windows中)以最大化窗口。

我尝试了这个,但它没有开火。

myStage.fullScreenProperty().addListener(new ChangeListener<Boolean>() {
            @Override
            public void changed(ObservableValue<? extends Boolean> prop, Boolean wasIconified, Boolean isIconified) {
                System.out.println("ignore fullscreen");
            }
        });

是否有其他方式来消耗该事件,因此它没有效果?

4 个答案:

答案 0 :(得分:4)

实际上,您正在倾听错误的属性,您正在寻找的是(fact 2) (fact 1) (fact 0)

以下是禁用窗口最大化的代码:

primaryStage.maximizedProperty().addListener((observable, oldValue, newValue) -> {
            if (newValue)
                primaryStage.setMaximized(false);
        });

它会监听最大化事件,然后检查它是否实际通过maximizedProperty最大化然后强制暂停阶段禁用最大化。

希望有所帮助

答案 1 :(得分:2)

如果您根本不希望用户调整窗口大小,则可以将舞台的resizable property设置为false。

答案 2 :(得分:2)

将此代码用于您的舞台

myStage.setResizable(false);

答案 3 :(得分:0)

约束舞台大小范围

myStage.setMaxHeight(500);
myStage.setMaxWidth(600);

可能

myStage.setMinHeight(50);
myStage.setMinWidth(60);

修改
好吧,我同意@kleopatra,双击窗口最大化是大多数操作系统GUI的常见行为,迟早OS用户会熟悉这一点。如果您的布局在较大/较小的尺寸上变得更糟,那么限制舞台尺寸仍然会有所帮助。并且还想要禁用双击行为,使用JavaFX(如Ensemble应用程序)构建自己的窗口管理器,而不依赖于操作系统提供的那个。