Как изменить размер шрифта по умолчанию в Swing GTK LookAndFeel?

Есть ли способ изменить размер шрифта по умолчанию в Swing GTK LaF?

GTK LaF, похоже, принимает 72dpi, поэтому все шрифты имеют размер только 3/4 от размера, который они должны быть при использовании экрана 96dpi. Видеть этоОшибка Fedora для деталей. Тем временем я хотел бы найти обходной путь, пока жду исправления.

Я уже пытался сбросить размер шрифта черезUIDefaultsв соответствии с рекомендациямиВотНапример, но (как и там отмечалось) GTK LaF, похоже, игнорирует это.

I мог создайте фабрику виджетов, которая также установит желаемый размер шрифта для создания всех моих виджетов Swing, но это будет массово инвазивно, поэтому я бы хотел избежать этого маршрута, если есть какой-либо другой способ.

Редактировать: Следующее не работает:

public class GTKLaF extends com.sun.java.swing.plaf.gtk.GTKLookAndFeel {
  @Override
  public UIDefaults getDefaults() {
    final float scale = 3f;

    final UIDefaults defaults = super.getDefaults(); 

    final Map<Object,Object> changes = new HashMap<Object,Object>();

    for (Map.Entry<Object,Object> e : defaults.entrySet()) {
      final Object key = e.getKey();
      final Object val = e.getValue();

      if (val instanceof FontUIResource) {
        final FontUIResource ores = (FontUIResource) val;
        final FontUIResource nres =
          new FontUIResource(ores.deriveFont(ores.getSize2D()*scale));
        changes.put(key, nres);
        System.out.println(key + " = " + nres);
      } 
      else if (val instanceof Font) {
        final Font ofont = (Font) val;
        final Font nfont = ofont.deriveFont(ofont.getSize2D()*scale);
        changes.put(key, nfont);
        System.out.println(key + " = " + nfont);
      }
    }

    defaults.putAll(changes);

    return defaults;
  }
}

Вы можете подумать, что это напечатало бы по крайней мере дюжину пар ключ-значение, но печатает только одну: TitledBorder.font. Очевидно, что другие свойства шрифта не предоставляются GTLLookAndFeel, а получены из другого места!

Ответы на вопрос(4)

Ваш ответ на вопрос