【问题标题】:Fullscreen feature for Java Apps on OSX LionOSX Lion 上 Java 应用程序的全屏功能
【发布时间】:2011-10-15 23:00:05
【问题描述】:

我如何(本机)在 Java 应用程序中实现 OSX Lion 的全屏功能?

当前给出的答案包含一种实现全屏功能的好方法。我读过 Eclipse 可能能够使用 Lion 的“本机”全屏功能。这就是我要问的。

【问题讨论】:

    标签: java macos fullscreen osx-lion


    【解决方案1】:

    对于那些不介意快速而肮脏的解决方案的人:

    从 Frame 构造函数调用 getRootPane().putClientProperty("apple.awt.fullscreenable", Boolean.valueOf(true))。这就是setWindocCanFullScreen 所做的。

    【讨论】:

      【解决方案2】:

      我不知道本机,但 Java 确实支持全屏应用程序而不需要本机代码:

      http://saipullabhotla.blogspot.com/2012/05/enabling-full-screen-mode-for-java.html

      问题是 Apple 是否在他们的 JDK 中使用 Lion 实现了这一点。

      【讨论】:

      • 这个FS其实更像是“游戏专属FS”,可以选择分辨率、刷新率等。
      【解决方案3】:

      您想要做的事情可以通过 com.apple.eawt 库来完成。此外,如果您还将应用程序部署在其他操作系统(如 Windows、Linux 等)上,为了避免通过反射编写代码。您应该使用并分发嵌入在您的应用程序中的来自 Apple 的 AppleJavaExtensions.jar

      这是使框架可全屏扩展的方法:

      FullScreenUtilities.setWindowCanFullScreen(window,true);
      

      这是切换全屏的方法:

      Application.getApplication().requestToggleFullScreen(window);
      

      其中参数 window 是您尝试实现全屏显示的应用程序的 JFrame。

      要查看示例应用程序,请查看RationalPlan Project

      【讨论】:

      • 您确实看到了,公认的解决方案相当陈旧,并且由于反射而更强大?
      • 对于像我这样不想打扰反射的其他用户,我的回答是一个稍微互补的解决方案。
      【解决方案4】:

      我在 Apple 的 Java 发行说明中发现了这一点:

      Mac OS X 10.7 Lion 全屏支持

      Lion 上的 Java 应用程序现在可以选择每个窗口的全屏窗口功能。开发人员可以使用 com.apple.eawt.FullScreenUtilities 类将窗口标记为能够全屏,并使用 com.apple.eawt.Application.requestToggleFullScreen(Window)以编程方式请求窗口进入和退出全屏模式的方法。此 API 在 Mac OS X 10.6 Snow Leopard 上不执行任何操作。

      更明确地说,尝试尽早从 JFrames 的构造函数中调用它...

      /**
       * @param window
       */
      @SuppressWarnings({"unchecked", "rawtypes"})
      public static void enableOSXFullscreen(Window window) {
          Preconditions.checkNotNull(window);
          try {
              Class util = Class.forName("com.apple.eawt.FullScreenUtilities");
              Class params[] = new Class[]{Window.class, Boolean.TYPE};
              Method method = util.getMethod("setWindowCanFullScreen", params);
              method.invoke(util, window, true);
          } catch (ClassNotFoundException e1) {
          } catch (Exception e) {
              log.log(Level.WARNING, "OS X Fullscreen FAIL", e);
          }
      }
      

      【讨论】:

      【解决方案5】:

      请向 Apple 提交错误报告。他们在 OS X 上维护 Java,它应该符合他们发布的标准。

      【讨论】:

      【解决方案6】:

      Java allows you full screen mode, that has nothing to do with Lion.(通过chubbard

      如果你想用 Java 编写原生 Cocoa 应用程序,你需要使用JavaBridge。但是,JavaBridge 已被弃用。

      我的建议是:如果您想编写原生 OSX Cocoa 应用程序,请使用 Objective C 或 Macruby。 MacRuby 目前正在接受 Apple 的资助(Sansonetti 是 Apple 的一名全职员工),并且可能与 Cocoa 有未来。 Java 没有。

      【讨论】:

      • 你的链接和上面的一样。您的本机推荐是有道理的,但我们已经拥有该产品的完整且成熟的 Java 实现。 Apple 通常为 Java 提供特殊的 OSX API——我希望 Oracle 已经为 Lion 版本提供了类似的东西。
      • 我知道链接是一样的,我试图给出一个完整的答案。我把它归因于chubbard。苹果确实提供了它,它被称为 JavaBridge。链接在上面。
      • 我可以添加像 NetBeans 这样的多平台应用程序。在 Mac 上运行时,菜单集成到 OSX 菜单(即窗口内没有“菜单栏”)。他们有一个“全屏”功能,但它不像 Lion 的 FS。我很想创建一个补丁并将其提交给 NB 团队。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-03
      • 1970-01-01
      • 1970-01-01
      • 2015-09-22
      • 2012-03-19
      相关资源
      最近更新 更多