2009-06-25 2 views

Antwort

14

In der Klasse Font können Sie die Schriftgröße festlegen.

So erstellen Sie eine Schriftart Sie etwas tun, wie folgt aus:

Font f = new Font("serif", Font.PLAIN, fontSize); 

Der fontSize Parameter wird die Größe Ihrer Font bestimmen.

Sie können die Größe eines vorhandenen Font-Objekts nicht ändern. Der beste Weg, um einen ähnlichen Effekt zu erzielen, ist die deriveFont(size) Methode, um eine neue, fast identische Font zu erstellen, die eine andere Größe hat.

Font original = // some font 
Font bigger = original.deriveFont(newSize); 

Wo newSize ein Schwimmer ist, nicht ein int:

Font biggerFont = existingFont.deriveFont(bigNumber); 
+1

Hinweis: Sie müssen angeben, dass 'bigNumber' ein Float ist, andernfalls lösen Sie die' derivedFont (int style) 'Überladung aus. I.e. 'existingFont.deriveFont (100f);'. –

+0

erstellt diese Methode "derivateFont (size)" ein neues Font-Objekt? – JAVA

7

Sie können mithilfe der folgenden einen neuen Font mit einer anderen Größe abzuleiten. Dies ist in der JavaDoc für Font dokumentiert wie andere Leute haben darauf hingewiesen

+1

+1. @Raji: Wenn Sie die Schriftgröße auf den GUI-Komponenten auf diese Weise erhöhen möchten, können Sie dies unter Beibehaltung der Schriftart und des Formats tun. Beispiel: myLabel.setFont (myLabel.getFont(). DerivateFont (20)); Sie können dann einen rekursiven Algorithmus implementieren, der diese Operation für die gesamte Komponentenhierarchie ausführt. Nur eine Idee. – akarnokd

+2

newSize _muss_ ein 'float' sein, kein' int'. Siehe [derivedFont (float)] (http://docs.oracle.com/javase/6/docs/api/java/awt/Font.html#deriveFont (float)) und antworte von Avrom. [derivedFont (int)] (http://docs.oracle.com/javase/6/docs/api/java/awt/Font.html#deriveFont (int)) wendet ein _style_ an (kodiert als 'int'-Wert) zur Schriftart. –

6

Unter der Annahme, dass Sie die Schriftgröße auf einem bestimmten JLabel ändern möchten, können Sie tun:

label.setFont(label.getFont().deriveFont(newSize)); 

Vergewissern Sie sich, dass newSize a float kein int.

5

können Sie die Eigenschaft swing.plaf.metal.controlFont gesetzt, wenn Sie Anwendung ausgeführt wird:

java -Dswing.plaf.metal.controlFont = Dialog-50 YourMainClass

in In diesem Beispiel haben Sie die Standardschriftart auf "Dialog" mit der Größe 50 gesetzt.

+0

+1 für die Swing-Parametrierung – akarnokd

7

Ich interpretierte diese Frage als "Wie kann ich die Schriftgröße für Swing auf der ganzen Linie erhöhen?" Ich kenne keine integrierte Möglichkeit, dies zu tun, aber Sie könnten es selbst tun, indem Sie die Werte in der UIManager-Klasse beim Start ändern, bevor Sie Swing-Komponenten erstellen.

Ich mache dies, indem ich einen Parameter an meine App übergebe, den ich als Multiplikator verwende. Wenn ich 150 übergebe, multipliziert es alle vorhandenen Schriftarten um 150%. Der Code lautet wie folgt

public static void initializeFontSize() { 
    String fontSizeParam = System.getProperty("myapp.fontSize"); 
    if (fontSizeParam != null) { 
     float multiplier = Integer.parseInt(fontSizeParam)/100.0f; 
     UIDefaults defaults = UIManager.getDefaults(); 
     int i = 0; 
     for (Enumeration e = defaults.keys(); e.hasMoreElements(); i++) { 
      Object key = e.nextElement(); 
      Object value = defaults.get(key); 
      if (value instanceof Font) { 
       Font font = (Font) value; 
       int newSize = Math.round(font.getSize() * multiplier); 
       if (value instanceof FontUIResource) { 
        defaults.put(key, new FontUIResource(font.getName(), font.getStyle(), newSize)); 
       } else { 
        defaults.put(key, new Font(font.getName(), font.getStyle(), newSize)); 
       } 
      } 
     } 
    } 
} 
1

Die Frage ist viel zu vage, um eine gute Antwort zu geben. Aber ich denke, dass Sie die Schriftgröße in Ihrer Anwendung systematisch erhöhen möchten.

Schriftart, Stil und Größe einer Java Swing-Anwendung werden über den LookAndFeel-Mechanismus gesteuert. Sie müssen die Schriftart im Look-and-Feel ändern, wenn die Änderung für alle Swing-Komponenten eines bestimmten Typs gelten soll.

Werfen Sie einen Blick auf das UIManager Beispiel.

Hier ist, wie die Schrift global Komponenten für einige UI zu ändern:

UIManager.put("Label.font", new FontUIResource(new Font("Dialog", Font.PLAIN, 10))); 
    UIManager.put("Button.font", new FontUIResource(new Font("Dialog", Font.BOLD, 10))); 
    UIManager.put("TextField.font", new FontUIResource(new Font("Dialog", Font.PLAIN, 10))); 
Verwandte Themen