【问题标题】:Setting different defaultFont to a JFrame将不同的 defaultFont 设置为 JFrame
【发布时间】:2026-02-09 22:45:02
【问题描述】:

我正在使用 Nimbus 外观,并且我已经设置了这样的 defaultFont。

NimbusLookAndFeel nimbus = new NimbusLookAndFeel();
nimbus.getDefaults().put("defaultFont", myFont);

完美运行。但是我有一个带有 JButton 的 JFrame。我只想为 JFrame 和 JFrame 的所有组件使用不同的“defaultFont”。

但是我该怎么做呢?

编辑:在我的 JFrame 中,我尝试像这样覆盖 defaultFont 值。

UIDefaults jDefaults = new UIDefaults();
jDefaults.put("defaultFont", newFont);

this.putClientProperty("Nimbus.Overrides.InheritDefaults", Boolean.TRUE);
this.putClientProperty("Nimbus.Overrides", jDefaults);

//SwingUtilities.updateComponentTreeUI(this); It doesn't work
System.Out.println(getFont()); // writting myFont instead of newFont

【问题讨论】:

  • @FastSnail 伙计,我已经用它来覆盖 nimbus 默认值。但我不认为你明白我的意思。我实际上想为不同的 JFrame 使用不同的 defaultFont。但我不确定这是否可能。
  • @FastSnail 它不起作用:(

标签: java swing look-and-feel nimbus


【解决方案1】:

设置字体后,你有没有尝试过:

           for(Window window : JFrame.getWindows()) {
            SwingUtilities.updateComponentTreeUI(window);
        }

【讨论】: