Java中的下划线字体的常量值是什么?
Font.BOLD 粗体字体
Font.ITALIC italic font
什么是UNDERLINE字体常量? 我尝试了所有可用的常量,但它没有用。
答案 0 :(得分:13)
查看Java API Specification,Font
class似乎没有下划线常量。
但是,使用Font(Map<? extends AttributedCharacterIterator.Attribute,?> attributes)
构造函数,可以为其指定包含TextAttribute
的Map
和要使用的值,以指定字体属性。 (请注意,TextAttribute
类是AttributedCharacterIterator.Attribute
)
TextAttribute.UNDERLINE
似乎是感兴趣的TextAttribute
。
修改:在Using Text Attributes to Style Text的The Java Tutorials部分中使用TextAttribute
的示例。
答案 1 :(得分:12)
假设您需要带下划线和粗体的Serif样式字体,size = 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
答案 2 :(得分:2)
下划线不是字体的属性,而是文本段的属性。渲染时,文本以指定的字体呈现,然后在其下绘制一条线。根据您使用的框架,可以使用属性为您完成,或者您可能必须自己完成。
答案 3 :(得分:0)
对于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);