【发布时间】:2013-01-27 10:24:35
【问题描述】:
我目前正在使用其中包含 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: 现实
<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>
【问题讨论】:
-
你能显示插入新东西之前文档中的html字符串吗?
标签: java html styles jtextpane