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

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

Font.BOLD Шрифт смелый

Font.ITALIC курсив font

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

stackoverflow ftw. Я просто искал это сегодня. Я использовал html, чтобы получить это некоторое время, но это вызывает целый ряд других проблем.

John Gardner 21.04.2009 01:24
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
13
1
26 974
4

Ответы 4

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

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

Mosty Mostacho 16.07.2012 03:54

+1 за индикацию на put не работает. Я только что наткнулся на него :) В итоге я использовал AttributeMap att = (AttributeMap)font.getAttributes();, так как Font.getAttribute() его использует.

Matthieu 03.06.2013 12:20

@Blake Я реализовал ваш код для подчеркивания, но я не видел подчеркивания. Я использую AWT Label, где хочу поместить подчеркнутую строку, как вы объяснили.

Arpit B Parekh 07.05.2016 13:56

Другие вопросы по теме