Java 将SWT标签的样式设置为斜体

Java 将SWT标签的样式设置为斜体,java,swt,Java,Swt,我将如何设置沿以下线条创建的SWT标签的样式,使其以斜体显示 Label label = formToolkit.createLabel(composite, "My label name"); 创建一个新对象 最好使用JFaces中的FontRegistry类,如下所示: label.setFont( JFaceResources.getFontRegistry().getItalic(JFaceResources.DEFAULT_FONT) ); A(2014年2月自)建议另一种

我将如何设置沿以下线条创建的SWT标签的样式,使其以斜体显示

Label label = formToolkit.createLabel(composite, "My label name");
创建一个新对象


最好使用
JFaces
中的
FontRegistry
类,如下所示:

label.setFont(
    JFaceResources.getFontRegistry().getItalic(JFaceResources.DEFAULT_FONT)
);
A(2014年2月自)建议另一种获取当前字体的方法,以便对其进行修改:

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


下面的代码应该可以工作:

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

似乎您必须执行类似于descriptor=descriptor.setStyle(SWT.BOLD)的操作;这与其说是一种set()方法,不如说是一种create()方法。不幸的是,该解决方案不能以1:1的比例工作。也找不到修复程序。setStyle方法为给定样式返回一个新的字体描述符,因此better descriptor=descriptor.setStyle(SWT.BOLD)例如@kewlbfy interest。我已相应地编辑了答案。它看起来更准确吗?是的,请记住,descriptor.createFont方法确实直接调用字体构造函数,因此与在构造函数调用时必须处理的可处理文件的预期设计不同,此处创建的字体也必须处理。可能会将其添加到FontRegistry应该提到的是,此帮助器类将自动处理所有请求的字体。因此,您不再需要保留引用来处理它们,这在这个解决方案的简洁性上是一个很好的奖励。只是一个小小的更正:虽然使用空字符串可以达到相同的效果,但是获得默认斜体字体的“正确”方法是
getItalic(JFaceResources.default\u font)
,试想一下,人们说Java太冗长了
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");
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");