2009-06-25 5 views

Répondre

14

La classe Font vous permet de spécifier la taille de la police.

Ainsi, pour créer une police que vous faites quelque chose comme ceci:

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

Le paramètre fontSize déterminera la taille de votre Font.

Vous ne pouvez pas réellement modifier la taille d'un objet Font existant. La meilleure façon d'obtenir un effet similaire est d'utiliser la méthode deriveFont(size) pour créer un nouveau Font presque identique de taille différente.

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

Note: vous devez spécifier que bigNumber est un float, sinon vous déclenchez la surcharge deriveFont (int style). C'est à dire. 'existingFont.deriveFont (100f);'. –

+0

cette méthode "deriveFont (size)" créera-t-elle un nouvel objet police? – JAVA

7

Vous pouvez obtenir une nouvelle police avec une taille différente en utilisant les éléments suivants:

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

Où newSize est un flotteur, pas un int. Ceci est bien documenté dans la JavaDoc pour la police que d'autres personnes ont signalé

+1

+1. @Raji: De plus, si vous voulez augmenter la taille de la police sur les composants de l'interface graphique de cette façon, vous pouvez le faire tout en conservant le jeu de polices et le format. Par exemple: myLabel.setFont (myLabel.getFont(). DeriveFont (20)); Vous pouvez ensuite implémenter un algorithme récursif qui effectue cette opération sur l'ensemble de la hiérarchie des composants. Juste une idée. – akarnokd

+2

newSize _must_ être un 'float', pas un' int'. Voir [deriveFont (float)] (http://docs.oracle.com/javase/6/docs/api/java/awt/Font.html#deriveFont (float)) et répondez depuis Avrom. [deriveFont (int)] (http://docs.oracle.com/javase/6/docs/api/java/awt/Font.html#deriveFont (int)) applique un _style_ (codé comme une valeur int) à la police. –

6

En supposant que vous voulez changer la taille de la police sur une JLabel spécifique, vous pouvez faire:

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

Assurez-vous que newSize est un float n'est pas un int.

5

vous pouvez définir la propriété swing.plaf.metal.controlFont lors de l'exécution vous demande:

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

dans cet exemple, vous définissez la police par défaut pour être « dialogue » avec la taille 50.

+0

+1 pour le paramètre Swing – akarnokd

7

Je cette question une interprétation comme « Comment puis-je augmenter la taille de la police pour swing à travers le conseil d'administration. » Je ne connais pas de méthode intégrée pour cela, mais vous pouvez le faire vous-même en modifiant les valeurs de la classe UIManager au démarrage avant de créer des composants Swing. Je le fais en faisant passer un paramètre dans mon application que j'utilise comme un multiplicateur. Si je passe en 150 cela va multiplier toutes les polices existantes de 150%. Le code est le suivant

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

La question est trop vague pour donner une bonne réponse. Mais je pense que vous voulez systématiquement augmenter la taille de la police dans votre application.

Le visage de police, le style et la taille dans une application Java Swing est contrôlé via le mécanisme de LookAndFeel. Vous devez modifier la police dans l'aspect et la convivialité si vous voulez que la modification s'applique à tous les composants Swing d'un type donné.

Jetez un oeil à l'exemple UIManager.

Voici comment changer la police à l'échelle mondiale pour certains composants de l'interface utilisateur:

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))); 
Questions connexes