我将此文本设置为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 istest显示工具提示t1newtitle显示工具提示t2
但是,当我将鼠标移到单词title="t2"上时,无法检索more;相反,它会显示工具提示t1
使用JEditorPaneStructureTool,我得到了这个结构:
内部结构似乎有一些问题。
有什么方法可以得到正确的标题属性吗?

最佳答案

我知道HTMLDocument的局限性,这是解决这个问题的一个诀窍。尝试用下列字体替换外跨距:

    This is <font title="t2" style="color: #00FF00;">new <span style="color: #0000FF;">more</span> title</font> test

我很肯定会成功的。给这些字体一个特定的类。这样,您可以在导出html内容时将它们还原为span。

10-05 21:17