24

我刚刚意识到 Java JDK 1.7(截至 JDK 7u15)下的 AWT / Swing 不支持 Apple Macbook Pros 上的 Retina 显示器。例如,Netbeans 几乎无法忍受在 Retina 显示器上运行超过几分钟并使用 JDK 1.7。

这已在此处的 StackExchange 问题中有所解决,并引用了一篇特定的帖子:

Apple 的 Java 6 JRE 将支持 HiDPI,但 Oracle 的 Java 7 JRE 目前不支持它。它也不能在最新的 Java 8 开发版本下工作。Swing 和 JavaFX 应用程序在 Retinia MacBook 上是模糊的。这就是 IntelliJ 仍然在 Java 6 下运行的原因。

我的问题比上述线程的 OP 所问的更具体。

我不到一个月的雇主在其所有应用程序中都使用 Swing。出于几个原因,我们有兴趣从 Java 6 迁移到 Java 7。在过去的几天里,另一位开发人员(使用 Windows)将我们的平台迁移到 Java 7。当我运行视网膜 Macbook Pro 时,我注意到当我拉出我们代码的最新稳定分支时的问题。

我是 Java 新手,在社区工作不到一年,因此我的问题是:Java 社区是否会对这个问题做出相当大的响应,或者是否应该在 Swing 之前预计会出现大幅延迟(几个月到一年或更长时间) Java 7 中是否与 Apple Retina 显示器兼容?

4

4 回答 4

19

Java 7u40 Early Access 现在支持 HiDPI (Retina) 显示,如此更新日志所示。因此,视网膜支持现在可用于:

  • 爪哇 6
  • Java 7u40ea 或更高版本
  • 爪哇 8
于 2013-06-10T17:39:54.753 回答
7

上个月我也对同一个话题感兴趣,一段时间后我在网上发现没有人能准确回答这个问题。

在甲骨文有一个开放的错误: http ://bugs.sun.com/view_bug.do?bug_id=8000629

据此,它应该为 Java 1.8 修复。但我担心的是我不确定它是否也将针对 Swing 或仅针对 JavaFX 进行修复。我在某处读到,JavaFX 已经修复(但不确定是否是官方的),但这并不能解决 Swing 的问题。

简而言之,不幸的是,在互联网上搜索了几天后,我找不到答案...

问候, 卢博斯

于 2013-03-11T12:01:27.430 回答
6

从 1.7.0_40ea 开始,Oracle 完全支持 Retina。但是,缺乏针对 Retina 的 API。例如,不支持像 Apple JDK 中的 HiDPIScaledImages。您可以在此处http://bulenkov.com/2013/06/23/retina-support-in-oracle-jdk-1-7/找到一些关于 Oracle JDK 中 Retina 支持的酷提示

于 2013-06-26T08:56:27.233 回答
2

根据我几个月前阅读的一篇长篇文章(http://lists.apple.com/archives/java-dev/2012/Oct/msg00127.html),在 Swing 中获取 Retina 的唯一方法是安装 Apple JDK ,而后者只是使用“hack”来使应用程序与视网膜兼容。该线程提到 JavaFX 作为一种解决方法(当您已经有一个用 Swing 编写的复杂软件时,这当然不是真正的解决方法)。

在阅读了上面的帖子后,我自己尝试用 Java 7 编写一个简单的 JavaFX 应用程序,它在 Retina 上看起来更清晰;与 Ensamble(JavaFX 演示应用程序,可在 App Store 中获得)相同,它的渲染似乎也比普通的 Swing 应用程序(如 Java 控制面板)好得多,但也许这只是建议的力量。

由于我正在积极测试每个新的 Java 8 Snapshot 版本,我还可以确认几乎没有做任何工作来让 Swing 在视网膜显示器上看起来可以通过。

我们现在最好的选择(只是一个意见,没有任何秘密知识)是甲骨文的某个人(或 OpenJDK 贡献者)将购买一个视网膜 mac 并在 Java 8 中修复它。我认为苹果不会修复它通过提供 Java 6 修复程序,因为来自 Apple 的人说他们只是将与渲染相关的代码恢复为 Quartz。它确实给出了预期的结果,但与未开源的专有 OS X 内部结构密切相关。

于 2013-03-11T21:31:43.257 回答