



Подчеркивание - это свойство не шрифта, а текстового сегмента. При визуализации текст отображается указанным шрифтом, а под ним рисуется линия. В зависимости от того, какой фреймворк вы используете, это может быть сделано за вас с помощью свойств или вам, возможно, придется сделать это самостоятельно.
Для 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);
Глядя на Спецификация Java API, кажется, что Font класс не имеет константы для подчеркивания.
Однако, используя конструктор Font(Map<? extends AttributedCharacterIterator.Attribute,?> attributes), можно дать ему Map, содержащий TextAttribute и значение для использования, чтобы указать атрибуты шрифта. (Обратите внимание, что класс TextAttribute является подклассом AttributedCharacterIterator.Attribute)
TextAttribute.UNDERLINE кажется интересным TextAttribute.
Редактировать: Есть пример использования TextAttribute в разделе Использование текстовых атрибутов для стилизации текста из Учебники по Java.
Предположим, вам нужен подчеркнутый и полужирный шрифт в стиле 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. Не используйте метод getAttributes () класса Font. Это даст вам сумасшедший параметризованный тип с подстановочными знаками Map<TextAttribute,?>, и вы не сможете вызвать метод put (). Иногда Java может быть таким противным. Если вам интересно, почему, вы можете посетить этот сайт: http://www.angelikalanger.com/GenericsFAQ/FAQSections/ParameterizedTypes.html
Забавно то, что если вы попытаетесь отключить подчеркивание, вы не найдете константу UNDERLINE_OFF. Но вы можете сделать это, используя значение -1. Например: fontAttributes.put(TextAttribute.UNDERLINE, -1);
+1 за индикацию на put не работает. Я только что наткнулся на него :) В итоге я использовал AttributeMap att = (AttributeMap)font.getAttributes();, так как Font.getAttribute() его использует.
@Blake Я реализовал ваш код для подчеркивания, но я не видел подчеркивания. Я использую AWT Label, где хочу поместить подчеркнутую строку, как вы объяснили.
stackoverflow ftw. Я просто искал это сегодня. Я использовал html, чтобы получить это некоторое время, но это вызывает целый ряд других проблем.