繁体   English   中英

Mac JVM渲染JTabbedPane 1.6与更高版本之间的差异

[英]Mac JVM rendering JTabbedPane differences between 1.6 and above

这就是JTabbedPane在Java 1.6中的呈现方式:

JTabbedPane在Java 1.6中完美呈现

当使用Java 1.7(或1.8 EA)时,请参见以下页面:

JTabbedPane在Java 1.7和1.8中表现很差

我尝试了系统属性-Dcom.apple.macos.smallTabs = true-Dcom.apple.smallTabs = true ,但没有成功(或没有效果)。

任何解决方案或黑客对此表示赞赏。

运行本示例 ,我无法使用Java 7再现Mac OS X 10.9.2上显示的效果。我怀疑您忽略了对封闭的Window pack() ,但是您可以将代码与所示的代码进行比较以供参考。

图片

找到了问题。 SwingUtilities.invokeLater块中构建UI 之前 ,我曾调用过以下代码:

import java.awt.Font;
import java.util.ArrayList;
import java.util.Enumeration;
import javax.swing.UIManager;

...

Font f = new Font(Font.DIALOG, Font.PLAIN, 12);
ArrayList<String> excludes = new ArrayList<String>();
Enumeration itr = UIManager.getDefaults().keys();
while(itr.hasMoreElements()){
    Object o = itr.nextElement();
    if(o instanceof String) {
        String key = (String) o;
        Object value = UIManager.get (key);
        if ((value instanceof javax.swing.plaf.FontUIResource)
                && (!excludes.contains(key))){
            UIManager.put (key, f);
        }
    }
}

我希望所有UI元素在我的应用程序中都具有统一的Font。 当我评论此块时,UI呈现就像Java 6中一样。似乎是Java更高版本中的一个错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM