【问题标题】:How to make main javafx window still resizable coming back from full screen mode in MacOS如何使主 javafx 窗口在 MacOS 中从全屏模式返回时仍可调整大小
【发布时间】:2017-11-24 15:33:21
【问题描述】:

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

编辑 1:该问题现已报告并在 bugs.java.com 上可见,网址为 JDK-8191885

【问题讨论】:

    标签: java macos javafx macos-sierra


    【解决方案1】:

    由于在 Java 11 之前甚至没有计划修复这个错误,我们可能不得不忍受它相当长的一段时间。因此,我试图为它找到某种解决方法,它是:

    添加此代码或与您的代码类似的内容。

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

    一旦您通过绿色按钮取消最大化您的舞台,您唯一需要手动做的就是单击舞台的标题栏并将其移动几个像素。之后,舞台应该像往常一样再次使用鼠标调整大小。这是一个令人讨厌的 hack,但总比永远忍受这个错误要好。

    【讨论】:

    • 非常感谢,我发现在恢复正常屏幕模式时调用的 fullScreenProperty() 添加一个监听器会更好。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      谢谢米帕!我发现给fullScreenProperty() 添加一个监听器会更好,这样你就不必点击标题栏并将其移动几个像素。关键是先做setResizable(false),然后是setResizable(true),感谢您发现这一点。在修复错误之前,我将使用此解决方法:

          primaryStage.fullScreenProperty().addListener((v,o,n) -> {
      
              if (!primaryStage.isFullScreen()) {
      
                  primaryStage.setResizable(false);
                  primaryStage.setResizable(true);
              }
          });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-05-24
        • 2019-09-14
        • 1970-01-01
        • 2016-01-10
        • 2017-03-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多