【发布时间】:2012-09-27 03:12:00
【问题描述】:
我有一个应用程序,它使用 Unix 中的默认金属外观。对于 Solaris 10,这意味着 Dialog 字体被翻译为 Arial。对于 Solaris 11,字体文件已移动,因此我的字体已更改。除了我的应用程序中的文件之外,我无法更改任何文件,因此更改 fontconfig.properties 不是一种选择。
1) 有没有办法在应用程序的开头说 Dialog=Arial (and Dialog.Bold = Arial.Bold)?
2) 由于我找不到执行上述操作的方法,我一直在使用 UIManager.put("Menu.font", new Font("Arial, Font.BOLD, 12)) 命令。 这似乎有效(希望我不会错过小部件类型)但是我的 JTree,当我使用默认值时不使用 Label.font,当我调用 UIManager.put("Label .font", new Font("Arial, Font.BOLD, 12))。即使我也有 UIManager.put("Tree.font", new Font("Arial, Font.PLAIN, 12)) 也会发生这种情况。
使用默认值,我的标签是粗体的,而我的树不是。您对这可能会发生什么以及如何将这两种字体分开以便我可以强制它们为 Arial 但标签为粗体和 JTree 纯文本有任何建议吗?
设置 UI 管理器是应用程序要做的第一件事。
【问题讨论】:
-
为什么逻辑字体
Dialog在 Solaris 11 中映射到不同的物理字体很重要? -
字体映射不同意味着应用程序在两个系统之间看起来不一样。由于字体现在更大,组合框或按钮上的一些值被截断。由于这个应用程序是由客户使用的,而不仅仅是我自己,所以应用程序的外观不会因为客户端从 Solaris 10 升级到 Solaris 11 而改变。