我正在参考这份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。