13

Java中下划线字体的常量值是多少?

Font.BOLD粗体

Font.ITALIC 斜体字体

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

4

4 回答 4

18

假设您想要一个带下划线和粗体的 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

于 2009-01-13T07:30:18.600 回答
13

查看Java API 规范Font该类似乎没有用于下划线的常量。

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

TextAttribute.UNDERLINE似乎很TextAttribute有趣。

编辑:在Java TutorialsTextAttributeUsing Text Attributes to Style Text部分中有一个使用示例。

于 2008-11-28T14:29:42.843 回答
3

下划线不是字体的属性,而是文本段的属性。呈现时,文本以指定的字体呈现,然后在其下绘制一条线。根据您使用的框架,这可能会使用属性为您完成,或者您可能必须自己完成。

于 2008-11-28T14:18:06.937 回答
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);
于 2008-11-28T14:23:59.687 回答