0

我使用的是 10.7.4 Retina。getRootPane().putClientProperty("apple.awt.brushMetalLook", true);
当我尝试在 JVM 1.6.0_51 上运行它时,我的 JFrame 看起来不像预期的那样。它看起来像这样:
在此处输入图像描述

甚至用 -d32 和 -d64 尝试过。

当我在最新的 JVM 1.7.0_25 上运行它时,它看起来像这样:
在此处输入图像描述

当我在 10.6 mac 上的 JVM 1.6.0_15 上运行它时,两者看起来都不像:
在此处输入图像描述

有没有办法解决这个问题?视网膜分辨率可能是原因吗?这篇文章与之前问过的这篇文章有点相关:JFrame is lagging on resize

4

1 回答 1

2

是的,您可以通过尽早放置客户端属性来解决此问题。

文档说:

警告:必须在创建 Window 的重量级对等体之前设置此属性。一旦在组件上调用了 addNotify() ,导致创建重量级对等体,更改此属性无效。

这是一个MWE:

import javax.swing.JFrame;

public class Main {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Hello World");
        frame.getRootPane().putClientProperty("apple.awt.brushMetalLook", Boolean.TRUE);
        frame.setSize(400, 300);
        frame.setVisible(true);
    }
}

MWE截图

如果你交换frame.setVisible(true);我们放置客户端属性的部分,你会得到一个黑框(Mac OS 10.9.4,Java 1.8.0_05):

不好的例子

希望,这对你有帮助。

于 2014-07-22T23:01:37.520 回答