2013-08-30 39 views
0

我正在使用10.7.4 Retina。我使用的JFrame看起來不像預期的那樣getRootPane().putClientProperty("apple.awt.brushMetalLook", true);
我試着在JVM 1.6.0_51上運行它。它看起來是這樣的:
enter image description hereapple.awt.brushMetalLook mac上的怪異行爲10.7 retina

甚至用-d32和-d64試過。

,當我運行它在最新的JVM 1.7.0_25它看起來就像這樣:
enter image description here

兩個看起來並不像他們應該當我跑步時它在10.6 mac上的JVM 1.6.0_15:
enter image description here

有沒有辦法解決這個問題?視網膜分辨率可能是原因嗎? 這篇文章有點類似於之前詢問過的:JFrame is lagging on resize

回答

2

是的,你可以通過儘早地把客戶端屬性解決這個問題。

Documentation說:

警告:此屬性必須重量級的同行之前窗口 設置創建。一旦組件上調用了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); 
    } 
} 

Screenshot of MWE

如果你換frame.setVisible(true);當我們把客戶特性的部件,你會得到一個黑框鍵(Mac OS 10.9.4,爪哇1.8.0_05):

Bad example

希望,helpe你呢。