Java中的下划线字体的常量值是什么?

时间:2008-11-28 14:08:31

标签: java class fonts bold underline

Java中的下划线字体的常量值是什么?

Font.BOLD 粗体字体

Font.ITALIC italic font

什么是UNDERLINE字体常量? 我尝试了所有可用的常量,但它没有用。

4 个答案:

答案 0 :(得分:13)

查看Java API SpecificationFont class似乎没有下划线常量。

但是,使用Font(Map<? extends AttributedCharacterIterator.Attribute,?> attributes)构造函数,可以为其指定包含TextAttributeMap和要使用的值,以指定字体属性。 (请注意,TextAttribute类是AttributedCharacterIterator.Attribute

的子类

TextAttribute.UNDERLINE似乎是感兴趣的TextAttribute

修改:在Using Text Attributes to Style TextThe 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);