2009-06-25 19 views

risposta

14

La classe Font consente di specificare la dimensione del carattere.

Così, per creare un tipo di carattere si fa qualcosa di simile:

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

Il parametro fontSize determinerà la dimensione del vostro Font.

Non è possibile modificare la dimensione di un oggetto Font esistente. Il modo migliore per ottenere un effetto simile è utilizzare il metodo deriveFont(size) per creare un nuovo Font quasi identico di dimensioni diverse.

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

Nota: è necessario specificare che 'bigNumber' è un float, altrimenti si attiverà il sovraccarico' deriveFont (int style) '. Cioè 'ExistingFont.deriveFont (100F);'. –

+0

questo metodo "deriveFont (size)" crea un nuovo oggetto Font? – JAVA

7

è possibile derivare un nuovo carattere con una dimensione diversa utilizzando la seguente:

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

Dove newSize è un galleggiante, non un int. Questo è ben documentato nel JavaDoc per Font come altre persone hanno fatto notare

+1

+1. @ Riji: Inoltre, se si desidera aumentare la dimensione del carattere sui componenti della GUI in questo modo, è possibile farlo mantenendo il set e il formato del font. Ad esempio: myLabel.setFont (myLabel.getFont(). DeriveFont (20)); È quindi possibile implementare un algoritmo ricorsivo che esegue questa operazione sull'intera gerarchia dei componenti. Solo un'idea – akarnokd

+2

newSize _must_ essere un 'float', non un' int'. Vedere [deriveFont (float)] (http://docs.oracle.com/javase/6/docs/api/java/awt/Font.html#deriveFont (float)) e rispondere da Avrom. [deriveFont (int)] (http://docs.oracle.com/javase/6/docs/api/java/awt/Font.html#deriveFont (int)) applica uno _style_ (codificato come valore 'int') al carattere. –

6

Supponendo che si desidera modificare la dimensione del carattere su uno specifico JLabel, si può fare:

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

Assicurarsi che newSize è un float non è un int.

5

è possibile impostare la proprietà swing.plaf.metal.controlFont durante l'esecuzione si domanda:

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

in In questo esempio, il carattere predefinito è "Dialog" con dimensione 50.

+0

+1 per la parametrizzazione Swing – akarnokd

7

Ho interpretato questa domanda come "Come posso aumentare la dimensione del carattere per Swing su tutta la linea". Non sono a conoscenza di alcun modo incorporato per farlo, ma è possibile farlo da soli modificando i valori nella classe UIManager all'avvio prima di creare qualsiasi componente Swing.

Lo faccio facendo passare un parametro nella mia app che utilizzo come moltiplicatore. Se passo 150, moltiplicherà tutti i font esistenti del 150%. Il codice è il seguente

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 domanda è troppo vaga per dare una buona risposta. Ma penso che tu voglia aumentare sistematicamente la dimensione del carattere nella tua applicazione.

Il tipo di carattere, lo stile e le dimensioni in un'applicazione Java Swing sono controllati tramite il meccanismo LookAndFeel. È necessario modificare il carattere nel look-and-feel se si desidera applicare la modifica a tutti i componenti Swing di un determinato tipo.

Dai un'occhiata all'esempio UIManager.

Ecco come cambiare il tipo di carattere globale per alcuni componenti dell'interfaccia utente:

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))); 
Problemi correlati