带有特定 HTML 标签的多行 Jlabel

发布于 2024-12-09 18:08:30 字数 629 浏览 0 评论 0原文

我想向我的 Jlabel 添加多行;我在 HTML 的帮助下做到了这一点,但在某些情况下我遇到了问题,情况是我使用特殊的标签属性,如 dir="RTL" 和 ... 。我应该怎么做才能解决这个问题?

如果我使用:
jLabel1.setText("

John
2010/7/21 11:57:47 AM
");
标签显示:

        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>

I want to add multi line to my Jlabel; I do it with help of HTML, but in some situation I have problem with it, the situation is that I use special tag property like dir="RTL" and ... . What should I do to solve this problem?

If I use:
jLabel1.setText("<html><center>John<br>2010/7/21 11:57:47 AM<br>In</center></html>");
The label show :

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

But If I use :

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

The label show:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

小傻瓜 2024-12-16 18:08:30
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>");

,您需要对双引号字符串内的双引号进行转义。您现在正在做的是打印 ,中断字符串,然后打印 >

John
2010/7/21 11:上午 57:47

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

Needs to be

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

That is, you need to escape double quotes inside a double quoted string. What you're doing at the moment is printing out <html DIR=, breaking the string, then printing ><center>John<br>2010/7/21 11:57:47 AM<br>In</center></html>.

面犯桃花 2024-12-16 18:08:30

如果您的标签文本以 开头,那么它就不是 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;
}

所以只能使用 或 < code>,或者有趣的是 或其他四个字母的单词:-)

所以在你的情况下,你必须使用您的文本。但是,Swing HTML 子系统不支持 dir 属性。您必须调用

label.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT)

才能更改标签的组件方向。

If you start your label text with <html dir="ltr">, it will not be an HTML label but a plain text label. The reason is that java.swing.plaf.basic.BasicHTML#isHtmlString(String) is very simple, its implementation is

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;
}

so you can only use <html> or <HTML>, or interestingly also <abcd> or other four-letter words :-)

So in your case you would have to use <html><span dir="ltr">Your text</span></html>. However, the Swing HTML subsystem does not honor the dir attribute. You have to call

label.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT)

in order to change the component orientation for a label.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文