Как я могу подчеркнуть текст в JDK5, а не JDK6 - PullRequest
1 голос
/ 29 апреля 2010

при поиске в интернете я нашел способ подчеркнуть шрифт следующим образом,

Font f=jLabel1.getFont();
Map<TextAttribute,Object> map = new Hashtable<TextAttribute,Object>();
map.put(TextAttribute.UNDERLINE,TextAttribute.UNDERLINE_ON);
f=f.deriveFont(map);
jLabel1.setFont(f);

хорошо работает на jdk6, однако на jdk5 не работает и ни о чем не предупреждает. Во-первых, как я могу получить такой же эффект на JDK5? во-вторых, почему существует константа TextAttribute.UNDERLINE, если она не работает?

Ответы [ 3 ]

2 голосов
/ 29 апреля 2010

Я не знаю ни о каком другом, кроме как некрасивого HTML-подхода:

label.setText("<html>some <u>underlined</u> text</html>");

Однако помните, что если вы предоставите пользовательский внешний вид, HTML-рендеринг может перестать работать должным образом.

Другим способом было бы добавить MatteBorder к метке, но это «подчеркивает» всю метку:

label.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, Color.BLACK));
0 голосов
/ 29 апреля 2010

Сообщалось о многих ошибках в методах deriveFont; см. этот поиск . Я не мог найти тот, который точно соответствует вашей проблеме, но вам повезет больше. Если вы найдете соответствующее сообщение об ошибке, возможно, есть обходной путь.

0 голосов
/ 29 апреля 2010

Я думаю, что этот код может работать в JDK.5 text.setText ("0123456789 ABCDEFGHIJKLM NOPQRSTUVWXYZ"); // сделать 0123456789 подчеркнутым obj.underline=true может нормально работать.

  StyleRange style1 = new StyleRange();
    style1.start = 0;
    style1.length = 10;
    style1.underline = true;
    text.setStyleRange(style1);

0123456789 is underlined.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...