【问题标题】:apple.awt.brushMetalLook weird behaviour on mac 10.7 retinaapple.awt.brushMetalLook 在 mac 10.7 视网膜上的奇怪行为
【发布时间】:2013-08-30 22:00:01
【问题描述】:

我使用的是 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

【问题讨论】:

    标签: java macos jvm retina-display look-and-feel


    【解决方案1】:

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

    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):

    希望对你有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-09
      • 1970-01-01
      • 2013-09-03
      • 2012-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-24
      相关资源
      最近更新 更多