Java中下划线字体的常量值是多少?
Font.BOLD粗体 字
Font.ITALIC 斜体字体
什么是 UNDERLINE 字体常量?我尝试了所有可用的常量,但没有奏效。
假设您想要一个带下划线和粗体的 Serif 样式字体,大小 = 12。
Map<TextAttribute, Integer> fontAttributes = new HashMap<TextAttribute, Integer>();
fontAttributes.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);
Font boldUnderline = new Font("Serif",Font.BOLD, 12).deriveFont(fontAttributes);
如果您不希望它加粗,请使用 Font.PLAIN 而不是 Font.BOLD。不要使用 Font 类的 getAttributes() 方法。它会给你一个疯狂的通配符参数化类型Map<TextAttribute,?>
,你将无法调用 put() 方法。有时Java会像那样令人讨厌。如果您对原因感兴趣,可以查看此网站:http ://www.angelikalanger.com/GenericsFAQ/FAQSections/ParameterizedTypes.html
查看Java API 规范,Font
该类似乎没有用于下划线的常量。
但是,使用Font(Map<? extends AttributedCharacterIterator.Attribute,?> attributes)
构造函数,可以给它一个Map
包含TextAttribute
和要使用的值,以指定字体属性。(请注意,TextAttribute
该类是 的子类AttributedCharacterIterator.Attribute
)
TextAttribute.UNDERLINE
似乎很TextAttribute
有趣。
编辑:在Java TutorialsTextAttribute
的Using Text Attributes to Style Text部分中有一个使用示例。
下划线不是字体的属性,而是文本段的属性。呈现时,文本以指定的字体呈现,然后在其下绘制一条线。根据您使用的框架,这可能会使用属性为您完成,或者您可能必须自己完成。
对于 SWT,您可以使用:
StyledText text = new StyledText(shell, SWT.BORDER);
text.setText("0123456789 ABCDEFGHIJKLM NOPQRSTUVWXYZ");
// make 0123456789 appear underlined
StyleRange style1 = new StyleRange();
style1.start = 0;
style1.length = 10;
style1.underline = true;
text.setStyleRange(style1);