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

如何防止将JavaFX窗口最大化为全屏?,javafx,javafx-2,javafx-8,Javafx,Javafx 2,Javafx 8,我已经做到了 myStage.initStyle(StageStyle.UTILITY); 这对于移除“最大化”按钮很好,但仍有人可以双击窗口标题栏(在Windows中)以最大化窗口 我试过了,但它不着火 myStage.fullScreenProperty().addListener(new ChangeListener<Boolean>() { @Override public void changed(ObservableVal

我已经做到了

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");
            }
        });
myStage.fullScreenProperty().addListener(新的ChangeListener()){
@凌驾

public void changed(observevable值如果您根本不希望用户调整窗口大小,可以将stage设置为false。

约束stage大小范围

myStage.setMaxHeight(500);
myStage.setMaxWidth(600);
很可能

myStage.setMinHeight(50);
myStage.setMinWidth(60);
编辑:

嗯,我同意@kleopatra,双击时窗口最大化是大多数操作系统GUI上的常见行为,迟早操作系统用户会熟悉这一点。如果您的布局在较大/较小的大小上变得更差,仍然限制阶段大小将是有帮助的。并且仍然希望禁用双击行为,使用JavaFX构建您自己的窗口管理器(像合奏应用程序)而不依赖于操作系统提供的属性。

实际上,您收听的属性是错误的,您正在寻找的属性是
maximizedProperty

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

primaryStage.maximizedProperty().addListener((observable, oldValue, newValue) -> { if (newValue) primaryStage.setMaximized(false); }); primaryStage.maximizedProperty().addListener((可观察、旧值、新值)->{ 如果(新值) primaryStage.setMaximized(假); }); 它侦听最大化事件,然后通过
if(newVale)
检查它是否实际最大化,然后强制阶段禁用最大化


希望它有助于

将此代码用于您的舞台

myStage.setResizable(false);

我不知道如何完成您的问题,但事件不会触发,因为在JavaFX中,最大化不是全屏。这将是一个没有窗口标题的窗口,整个屏幕都没有。()事实上,我同意他们拖动窗口的一角使其变大或变小。我试图避免在有人无意中双击标题栏时窗口跳转到全屏。不熟练的用户不知道他们做了什么,为什么会这样,以及如何撤销它。这是一个小窗口。它永远不需要占据整个屏幕屏幕。@Andrew作为一般规则:不要堵住用户的嘴:-)他们会很快学会平台标准,如果某个应用程序不遵循这些标准,他们会很恼火。是的!@kleopatra,我只是在想这个问题,然后回来以几乎相同的方式回答。如果一个窗口不符合标准惯例,我会更加困惑。我完全同意。我知道我可能会错过一个宝贵的教学时间用户,但我同意。如果你看MS Windows 7或Windows 8 calculator(calc.exe),双击标题没有任何作用。如果它跳到全屏,可能看起来很傻。限制大小,但仍然跳到屏幕的上角-绝对大小没有多大好处(无论如何,这是一个不可以的;-)谢谢,伙计,这帮了大忙!应该是公认的答案:)