如何使主javafx窗口仍然可以在MacOS中从全屏模式返回

问题描述 投票:0回答:3

这个问题是关于JavaFX (jdk-9.0.1)上的MacOS(我运行Sierra)。我正在开发一个带有可调整大小的主窗口primaryStage.setResizable(true)的x平台桌面应用程序,在我点击绿色小按钮see picture below后,进入全屏模式,然后又回到正常模式,不再可以调整窗口大小。从MacOS上的全屏模式返回后,如何使其仍可重新调整大小?它适用于Windows和Linux,但不适用于MacOS。任何帮助深表感谢。

screenshot maximize button in macos

编辑1:现在报告问题并在bugs.java.com上可见以下网址JDK-8191885

java macos javafx macos-sierra
3个回答
0
投票

这看起来像JavaFX中的一个错误。我可以使用JDK9和10ea重现此行为。它似乎仍适用于最新的JDK8。我还没有找到任何工作。你应该在http://bugreport.java.com/报告


0
投票

因为它甚至没有计划在Java 11之前修复这个bug,所以我们可能不得不忍受它一段时间。因此,我试图为它找到某种工作方式,这里是:

添加此类似于您的代码。

primaryStage.maximizedProperty().addListener((v,o,n) -> {
    primaryStage.setResizable(false);
    primaryStage.setResizable(true);
});

一旦你通过绿色按钮取消了你的舞台最大化,你仍然需要手动做的唯一事情就是点击舞台的标题栏并将其移动几个像素。之后,舞台应该像往常一样再次使用鼠标调整大小。它是一个讨厌的黑客,但仍然比永远忍受这个错误更好。


0
投票

谢谢mipa!我发现向fullScreenProperty()添加一个监听器会更好,然后你不必点击标题栏并将其移动几个像素。关键是做setResizable(false)然后setResizable(true),谢谢你找到了。我将使用此解决方法,直到修复错误:

    primaryStage.fullScreenProperty().addListener((v,o,n) -> {

        if (!primaryStage.isFullScreen()) {

            primaryStage.setResizable(false);
            primaryStage.setResizable(true);
        }
    });
© www.soinside.com 2019 - 2024. All rights reserved.