我目前正在使用其中包含 html 的 JTextPane。我将它的内容类型设置为 html 并且一切正常……至少我是这么想的。
JTextPane 的功能是输出段落(与
标签),每个都有不同的颜色。每套
标签配备了内联样式属性。
现在我正在打印
像这样的标签:
String myLine = "<P style=\"color:blue;" +
"padding-left:25px;" +
"text-indent:-25px;" +
"font-family:Courier New;" +
"font-size:11;" +
"\">" ;
doc.insertBeforeEnd(body, myLine);
其中 doc 是 JTextPane 的 JTextPane HTMLDocument,body 是我的 HTMLDocument 中的 body 元素。
它在 JTextPane 中输出一切都很好,文本是蓝色的,快递,11 号,带有悬挂缩进。完美的!
您可能会认为,如果您再次恢复文本,您将看到 P 标记,就像您构建它的方式一样。所以我使用 getText() 方法恢复其中的 html: Reality
<p style="text-indent: -25px; padding-left: 25px">
当我真正期待看到这个时: 期望
<p style="color:blue; text-indent: -25px; padding-left: 25px; font-family:Courier New; font-size:11;">
为什么这样做?有没有办法避免这种情况?如果我不得不猜测,Java 似乎提取了文本属性,以便它可以通过自己的方式更有效地处理这些属性。
然而,我问这个的原因是因为一旦我开始更深入地自定义我的 JTextPane,颜色就开始变得不可靠。我宁愿将属性直接放在内联样式上。
在此先感谢,非常感谢您的帮助。
编辑:有人要求在之前和之后查看完整的 html 输出
添加了标签。
前:
<html>
<head>
</head>
<body>
</body>
</html>
现在我在java中执行这段代码:
String htmlLine = "<p style=\"color:blue; " +
"text-indent: -25px; " +
"padding-left: 25px; " +
"font-family:Courier New; " +
"font-size:11;\" >" ;
try {
doc.insertBeforeEnd(body, htmlLine);
} catch (Exception e) {
System.err.println(e);
}
后:
<html>
<head>
</head>
<body>
<p style="text-indent: -23px; padding-left: 25px">
First Text
</p>
</body>
</html>