2009-09-20 15 views
23

Ho bisogno di usare un font più grande per una delle etichette.Modifica solo la dimensione del carattere in SWT

label.setFont(new Font(display,"Arial", 14, SWT.BOLD)); 

ma ovviamente Arial non è sempre il carattere predefinito. Voglio cambiare solo la dimensione e mantenere tutto il resto ai valori di default.

posso fare qualcosa di simile

label.setFontSize(14); 

per evitare di impostare gli altri parametri? O posso almeno scoprire il nome del carattere che viene effettivamente utilizzato come predefinito?

risposta

35

Credo che si potrebbe fare qualcosa di simile

FontData[] fD = label.getFont().getFontData(); 
fD[0].setHeight(16); 
label.setFont(new Font(display,fD[0])); 

Finché non più di un tipo di carattere viene restituito, che dovrebbe funzionare.

31

È possibile effettuare le seguenti operazioni:

FontData[] fontData = label.getFont().getFontData(); 
for(int i = 0; i < fontData.length; ++i) 
    fontData[i].setHeight(14); 

final Font newFont = new Font(display, fontData); 
label.setFont(newFont); 

// Since you created the font, you must dispose it 
label.addDisposeListener(new DisposeListener() { 
    public void widgetDisposed(DisposeEvent e) { 
     newFont.dispose(); 
    } 
}); 
+1

dispose (immagine) non ha senso ed è probabilmente un errore di copia e incolla – mkdev

Problemi correlati