我正在使用10.7.4视网膜。当我使用getRootPane().putClientProperty("apple.awt.brushMetalLook", true);时,我的JFrame看起来不像预期的那样
我尝试在JVM 1.6.0_51上运行它。它看起来像这样:


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

当我在最新的JVM 1.7.0_25上运行它时,它将看起来像这样:



当我在10.6 mac上的JVM 1.6.0_15上运行它时,两者看起来都不像它们应该的样子:


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

最佳答案

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

Documentation说:


  警告:必须在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);
    }
}




如果交换frame.setVisible(true);和放置客户机属性的部分,则会出现黑框(Mac OS 10.9.4,Java 1.8.0_05):



希望对您有所帮助。

关于java - apple.awt.brushMetal在Mac 10.7视网膜上查看奇怪的行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18542062/

10-11 23:05
查看更多