Многострочный Jlabel с определенным тегом HTML - PullRequest
2 голосов
/ 13 октября 2011

Я хочу добавить несколько строк в мой Jlabel;Я делаю это с помощью HTML, но в некоторых ситуациях у меня возникают проблемы, я использую специальное свойство тега, например, dir = "RTL" и ....Что я должен сделать, чтобы решить эту проблему?

Если я использую:
jLabel1.setText("<html><center>John<br>2010/7/21 11:57:47 AM<br>In</center></html>");
На этикетке показано:

        john   
2010/7/21 11:57:47 AM  
         In

Но если я использую:

jLabel1.setText("<html DIR=\"LTR\"><center>John<br>2010/7/21 11:57:47 AM<br>In</center></html>");

Ярлык-шоу:

<html DIR=\"LTR\"><center>John<br>2010/7/21 11:57:47 AM<br>In</center></html>

Ответы [ 2 ]

1 голос
/ 13 октября 2011

Если вы начнете текст метки с <html dir="ltr">, это будет не метка HTML, а метка простого текста. Причина в том, что java.swing.plaf.basic.BasicHTML#isHtmlString(String) очень прост, его реализация

public static boolean isHTMLString(String s) {
if (s != null) {
    if ((s.length() >= 6) && (s.charAt(0) == '<') && (s.charAt(5) == '>')) {
    String tag = s.substring(1,5);
    return tag.equalsIgnoreCase(propertyKey);
    }
}
return false;
}

так что вы можете использовать только <html> или <HTML>, или, что интересно, <abcd> или другие четырехбуквенные слова :-)

Так что в вашем случае вам придется использовать <html><span dir="ltr">Your text</span></html>. Однако подсистема Swing HTML не учитывает атрибут dir. Вы должны позвонить

label.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT)

для изменения ориентации компонента для метки.

1 голос
/ 13 октября 2011
jLabel1.setText("<html DIR="LTR"><center>John<br>2010/7/21 11:57:47 AM<br>In</center></html>");

должен быть

jLabel1.setText("<html DIR=\"LTR\"><center>John<br>2010/7/21 11:57:47 AM<br>In</center></html>");

То есть вам нужно избегать двойных кавычек внутри строки в двойных кавычках. В данный момент вы печатаете <html DIR=, разрываете строку и затем печатаете ><center>John<br>2010/7/21 11:57:47 AM<br>In</center></html>.

...