我指的是这个 Nimbus 参考。
我尝试将全局字体设置为稍大:
UIManager.put("defaultFont", new Font(Font.SANS_SERIF, 0, 16));
...仅适用于菜单,但不适用于其他(按钮、标签)。
我试图改变标签和按钮字体
UIManager.put("Button.font", new Font(Font.SANS_SERIF, 0, 16));
UIManager.put("Label.font", new Font(Font.SANS_SERIF, 0, 16));
但字体仍然存在。
唯一对我有用的是派生字体:
someButton.setFont(someButton.getFont().deriveFont(16f));
但这不是一个选项,因为这必须手动为每个 元素完成。
请注意,为 UIManager 派生字体也不起作用:
UIManager.put("Label.font",
UIManager.getFont("Label.font").deriveFont(16f));
我在 Linux 和 Windows 下测试了所有内容:相同的行为。
我只是无法理解 API 怎么会如此混乱。如果一个方法被称为 setFont(..) 那么我希望它设置字体。如果此方法在任何可能的情况下都无法设置字体,则应弃用它。
编辑:
这个问题不仅适用于 Nimbus,也适用于默认的 LAF。