2009-12-02 16 views

Respuesta

17

Crea un nuevo objeto 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

Eso es un poco ridículo, pero funciona. ¡Gracias! –

+3

Y solo para pensar, la gente dijo que Java era demasiado detallado –

15

Sería mejor utilizar FontRegistry clase de JFaces, así:

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

Cabe mencionar que esta clase de ayuda eliminará automáticamente todas las fuentes solicitadas. Por lo tanto, ya no es necesario guardar referencias para eliminarlos, lo que es una buena ventaja además de la brevedad de esta solución. – JBert

+2

Solo una pequeña corrección: mientras usa una cadena vacía logra el mismo efecto, la forma "correcta" de obtener la fuente cursiva predeterminada sería 'getItalic (JFaceResources.DEFAULT_FONT)' –

+0

Editado, gracias. – Esteve

1

Un recent article (febrero de 2014, frente Jordi Böhme López) sugiere otra manera de conseguir la fuente actual con el fin de modificarlo:

es como obtener el plano de la fuente predeterminada, hacer algunos cambios y construir una nueva fuente con el plano modificado:

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

parece que tiene que hacer algo como descriptor = descriptor.setStyle (SWT.BOLD); Esto es más un método create() que un set() –

+0

Desafortunadamente, esta solución no funciona 1: 1. No puedo encontrar la solución tampoco. – mvreijn

+0

el método setStyle devuelve un nuevo descriptor de fuente para el estilo dado, así que mejor descriptor = descriptor.setStyle (SWT.BOLD) p. Ej. – benez

0

El código siguiente debería funcionar:

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"); 
Cuestiones relacionadas