如何检测Mac是否有来自Java的Retina显示器?

时间:2013-02-05 20:57:58

标签: java macos

我发现了一个Swing图像渲染错误,它只会影响带有Retina显示的Mac(TYPE_INT_ARGB_PRE BufferedImages无法绘制)。我有一个有效的解决方法(使用TYPE_INT_ARGB图像),但为了应用它,我需要能够检测主机是否是具有Retina显示的Mac。检测机器是否为Mac是没有问题的,但如何确定显示类型?

2 个答案:

答案 0 :(得分:15)

Toolkit.getDefaultToolkit().getDesktopProperty("apple.awt.contentScaleFactor")

以上行应在视网膜显示屏上返回2.0。在最近的非视网膜Mac上,它会返回1.0,而在所有其他平台上,您会返回null。我找不到任何官方文档,但在尝试解决类似问题时遇到了in this mailing list post

答案 1 :(得分:1)

我发现this解决方案使用:

Graphics2D g = (Graphics2D) this.getGraphics ();
boolean retinaTest = g.getFontRenderContext ().getTransform ()
    .equals (AffineTransform.getScaleInstance (2.0, 2.0));