我使用的是10.7.4 Retina。当我使用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
答案 0 :(得分: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);
}
}
如果你交换frame.setVisible(true);
和我们放置客户端属性的部分,你会得到一个黑框(Mac OS 10.9.4,Java 1.8.0_05):
希望,这对你有帮助。