【发布时间】:2014-04-13 15:41:04
【问题描述】:
我将此文本设置为JTextPane,内容类型为text/html。
<!doctype html>
<html>
<head><title>Test document</title></head>
<body style="font-family:monospace">
<p title="t1" style="color: #FF0000;">
This is <span title="t2" style="color: #00FF00;">new <span style="color: #0000FF;">more</span> title</span> test
</p>
</body>
</html>
我的目标是在鼠标悬停时让标题属性显示为工具提示。我了解到可以覆盖 JTextPane.getToolTipText(MouseEvent event) 并使用 JTextComponent.viewToModel(Point pt)。
到目前为止,This is 和 test 显示工具提示 t1,new 和 title 显示工具提示 t2,正如预期的那样。
但是,当我将鼠标悬停在单词 more 上时,我无法检索到 title="t2";相反,它显示工具提示t1。
使用JEditorPaneStructureTool,我得到了这个结构:
内部结构似乎有些问题。
有什么方法可以得到正确的title属性吗?
【问题讨论】:
-
恐怕不可能。正如您在工具中看到的那样,DOM 结构中没有跨度。相反,每个跨度都被转换为具有自己的一组属性的 LeafElement。属性具有对父级的引用,并显示 P 的标题。是否可以避免跨度跨度?
-
我对这个问题的结论是
javax.swing.text.html.HTMLDocument只能处理非常简单的结构;我刚刚发现具有多个class的元素没有正确呈现。我必须使 HTML 文档尽可能简单(目前)。