使用Java可以强制Dialog字体默认为Arial

时间:2012-10-05 23:01:06

标签: java swing fonts jtree

我有一个在Unix中使用默认,金属,外观的应用程序。对于Solaris 10,这意味着Dialog字体正在被翻译为Arial。对于Solaris 11,字体文件已移动,因此我的字体已更改。我无法更改除我的应用程序中的文件之外的任何文件,因此更改fontconfig.properties不是一个选项。

1)有没有办法在应用程序的开头说Dialog = Arial(和Dialog.Bold = Arial.Bold)?

2)由于我找不到上述方法,我一直在使用UIManager.put(“Menu.font”,新字体(“Arial,Font.BOLD,12))命令。 这似乎工作(希望我不会错过一个小部件类型)但是我的JTree,当我使用默认值时没有使用Label.font,当我调用UIManager.put时,它正在拾取我的Label.font值(“Label” .font“,new Font(”Arial,Font.BOLD,12)“。即使我还有UIManager.put(”Tree.font“,新字体(”Arial,Font.PLAIN,12)),也会发生这种情况。

使用默认值我的标签是粗体而我的树不是。你有什么建议可以解决这个问题以及我如何将这两种字体分开,以便我可以强制它们成为Arial,但标签是粗体还是JTree平原?

设置UI管理器是应用程序的第一件事。

1 个答案:

答案 0 :(得分:1)

  

组合框或按钮上的某些值被截断,因为字体现在变大了。

肯定截断文本是abomination,但调整Font尺寸不是解决方案。相反,使用合适的布局和pack()封闭的Window,其中“使此窗口的大小适合其子组件的首选大小和布局”。这个example比较了几个平台上的相同程序,每个平台都有不同的物理字体映射到默认字体系列。

由于这种方法本质上相当笼统,因此编辑问题可能有助于包含展示您遇到的特定问题的sscce

另见Should I avoid the use of set[Preferred|Maximum|Minimum]Size methods in Java Swing?