2009-12-02 119 views

回答

17

创建一个新的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

这是很荒谬的,但它的工作原理。谢谢! – 2011-09-27 14:36:29

+3

只是想,人们说Java太冗长了 – 2015-04-01 17:09:02

15

这将是更好地使用FontRegistry类从JFaces,像这样:

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

应该指出的是,这个辅助类将自动处理所有请求的字体。所以你不再需要继续引用它们,除了这个解决方案的简洁之外,这是一个不错的奖励。 – JBert 2014-11-03 15:13:50

+2

只是一个小的更正:当使用空字符串实现相同的效果时,获得默认斜体字体的“正确”方式是'getItalic(JFaceResources.DEFAULT_FONT)' – 2015-04-30 15:28:49

+0

编辑,谢谢。 – Esteve 2015-08-19 10:28:16

1

一个recent article(2014年2月从Jordi Böhme López)提出另一种方式来获得当前字体,以便修改:

这就像获取默认字体的蓝图,进行一些修改并用修改后的蓝图构建新字体:

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

它似乎你必须做一些像描述符= descriptor.setStyle(SWT.BOLD);这更像是一个create()而不是set()方法 – 2014-03-11 14:15:45

+0

该解决方案不幸1:1不能正常工作。无法找到修复程序。 – mvreijn 2014-06-16 11:18:25

+0

setStyle方法返回给定样式的新字体描述符,所以更好的描述符= descriptor.setStyle(SWT.BOLD)例如 – benez 2015-11-23 23:57:02

0

下面的代码应该工作:

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