我想在我的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>
答案 0 :(得分:1)
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>
。
答案 1 :(得分:1)
如果您使用<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)
以更改标签的组件方向。