1

我有一个应用程序在 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 管理器是应用程序要做的第一件事。

4

1 回答 1

1

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

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

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

另请参阅我应该避免在 Java Swing 中使用 set[Preferred|Maximum|Minimum]Size 方法吗?

于 2012-10-08T17:11:02.767 回答