Что такое постоянное значение шрифта подчеркивания в Java? - PullRequest
11 голосов
/ 28 ноября 2008

Что такое постоянное значение шрифта подчеркивания в Java?

Font.BOLD полужирный шрифт

Font.ITALIC курсив шрифт

Что такое шрифт UNDERLINE Constant? Я пробую все доступные константы, но это не сработало.

Ответы [ 4 ]

13 голосов
/ 28 ноября 2008

Если посмотреть на Спецификацию Java API , то выясняется, что класс Font не имеет константы для подчеркивания.

Однако, используя конструктор Font(Map<? extends AttributedCharacterIterator.Attribute,?> attributes), можно указать ему Map, содержащий TextAttribute и значение для использования, чтобы указать атрибуты шрифта. , (Обратите внимание, что класс TextAttribute является подклассом AttributedCharacterIterator.Attribute)

TextAttribute.UNDERLINE похоже на TextAttribute интереса.

Редактировать: Есть пример использования TextAttribute в Использование атрибутов текста для стиля текста из Учебники по Java .

12 голосов
/ 13 января 2009

Предположим, вам нужен подчеркнутый и полужирный шрифт в стиле 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. Не используйте метод getAttributes () класса Font. Это даст вам сумасшедший параметризованный тип подстановки Map<TextAttribute,?>, и вы не сможете вызывать метод put (). Иногда Java может быть таким противным. Если вы заинтересованы в том, почему, вы можете проверить этот сайт: http://www.angelikalanger.com/GenericsFAQ/FAQSections/ParameterizedTypes.html

2 голосов
/ 28 ноября 2008

Подчеркивание - это свойство не шрифта, а сегмента текста. Когда визуализированный текст отображается в указанном шрифте, под ним рисуется линия. В зависимости от того, какую платформу вы используете, это может быть сделано для вас с помощью свойств, или вам может потребоваться сделать это самостоятельно.

0 голосов
/ 28 ноября 2008

Для 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);
...