2009-12-02 10 views

risposta

17

Creare un nuovo oggetto Font.

Display display = new Display(); 
Shell shell = new Shell(display); 
shell.setLayout(new GridLayout()); 
Label label = new Label(shell, SWT.NONE); 
label.setText("I am italic"); 
FontData fontData = label.getFont().getFontData()[0]; 
Font font = new Font(display, new FontData(fontData.getName(), fontData 
    .getHeight(), SWT.ITALIC)); 
label.setFont(font); 
shell.open(); 
while (!shell.isDisposed()) { 
    if (!display.readAndDispatch()) 
    display.sleep(); 
} 
font.dispose(); 
display.dispose(); 
+8

che una specie di ridicolo, ma funziona. Grazie! –

+3

E solo per pensare, la gente ha detto che Java era troppo prolisso –

15

Sarebbe meglio utilizzare FontRegistry classe da JFaces, come questo:

label.setFont(
    JFaceResources.getFontRegistry().getItalic(JFaceResources.DEFAULT_FONT) 
); 
+1

Va detto che questa classe helper disporrà automaticamente di tutti i caratteri richiesti. Quindi non è più necessario conservare i riferimenti per eliminarli, il che è un bel vantaggio in aggiunta alla brevità di questa soluzione. – JBert

+2

Solo una piccola correzione: se si utilizza una stringa vuota si ottiene lo stesso effetto, il modo "corretto" per ottenere il carattere corsivo predefinito sarebbe 'getItalic (JFaceResources.DEFAULT_FONT)' –

+0

Modificato, grazie. – Esteve

1

A recent article (febbraio 2014 da Jordi Böhme López) suggeriscono un altro modo per ottenere il carattere corrente al fine di modificarlo:

è come ottenere il progetto del carattere predefinito, apportare alcune modifiche e creare un nuovo carattere con il progetto modificato:

Label label = new Label(parent, SWT.NONE); 
FontDescriptor descriptor = FontDescriptor.createFrom(label.getFont()); 
// setStyle method returns a new font descriptor for the given style 
descriptor = descriptor.setStyle(SWT.BOLD); 
label.setFont(descriptor.createFont(label.getDisplay)); 
label.setText("Bold Label"); 
+0

sembra che devi fare qualcosa come descriptor = descriptor.setStyle (SWT.BOLD); Questo è più un metodo create() che un metodo set() –

+0

Questa soluzione non funziona 1: 1 sfortunatamente. Non riesco a trovare la correzione neanche. – mvreijn

+0

il metodo setStyle restituisce un nuovo descrittore di caratteri per lo stile specificato, quindi meglio descriptor = descriptor.setStyle (SWT.BOLD) ad es. – benez

0

Il seguente codice dovrebbe funzionare:

Label lblSample = new Label(shell, SWT.BORDER_SOLID); 
lblSample.setFont(new org.eclipse.swt.graphics.Font(null, "Times New Roman", 12, SWT.BOLD | SWT.ITALIC)); 
lblSample.setText("Enter Text Here");