Wie ändere ich die Standardschriftgröße im Swing GTK LookAndFeel?

Gibt es eine Möglichkeit, die Standardschriftgröße im Swing GTK LaF zu ändern?

Der GTK LaF scheint 72 dpi anzunehmen, sodass alle Schriftarten nur 3/4 der Größe haben, die sie bei Verwendung eines 96-dpi-Bildschirms haben sollten. Sieh dir das anFedora Bug für Details. Ich möchte in der Zwischenzeit eine Problemumgehung finden, während ich auf das Update warte.

Ich habe bereits versucht, die Schriftgröße über @ zurückzusetzeUIDefaults, wie empfohlenHie zum Beispiel, aber (wie auch dort vermerkt) das GTK LaF scheint dies zu ignorieren.

I könnte Erstellen Sie eine Widget-Factory, die auch die gewünschte Schriftgröße für die Erstellung aller meiner Swing-Widgets festlegt. Dies wird jedoch massiv invasiv sein. Daher möchte ich diese Route vermeiden, wenn es andere Möglichkeiten gibt.

Bearbeiten Folgendes funktioniert nicht:

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;
  }
}

Sie könnten denken, dies würde mindestens ein Dutzend Schlüssel-Wert-Paare ausgeben, aber es wird nur eines ausgegeben: TitledBorder.font. Anscheinend werden die anderen Schrifteigenschaften nicht vom GTLLookAndFeel bereitgestellt, sondern stammen von einem anderen Ort!

Antworten auf die Frage(8)

Ihre Antwort auf die Frage