我指的是这个Nimbus引用。
我试图将全局字体设置为稍微大一点:
UIManager.put("defaultFont", new Font(Font.SANS_SERIF, 0, 16));...works只适用于菜单,但nothing (按钮、标签)。
我试着用
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。
发布于 2011-10-06 09:37:57
nimbus默认值是延迟创建的,因此在绘制屏幕之前设置'defaultFont‘,将字体添加到父默认值,而不是添加到nimbus默认值。
解决办法:强制nimbus初始化默认值,然后设置默认值:
NimbusLookAndFeel laf = new NimbusLookAndFeel();
UIManager.setLookAndFeel(laf);
laf.getDefaults().put("defaultFont", new Font("Monospaced", Font.BOLD, 12));注意:正如上面所建议的,这段代码比重写getDefaults()更有效。
https://stackoverflow.com/questions/949353
复制相似问题