我尝试使用扩展TableCellRenderer
的自定义JLabel
- 这显示了我想要的内容。
默认情况下,JLabel
'识别'HTML
`<html><body><img src='http://www......jpg'><br>Some Text
<a href='http://www.myDomain.com'>Click Here</a>Some More Text</body></html>`
但是JLabel
没有实现addHyperlinkListener
,因此点击该链接永远不会受到尊重。
如果我尝试使用扩展 TableCellRenderer
的JTextPane
进行相同操作,则不会显示“图片”,只显示默认的“已损坏”图片。
在这种情况下,JTextPane
确实会实现addHyperlinkListener
,但同样不会受到尊重。 (是的,我创建了一个听众。)
如果我对扩展 TableCellRenderer
的JEditorPane
尝试相同的操作,那么再次显示'image',只显示默认的'broken'图像。
在这种情况下,JTextPane
确实会实现addHyperlinkListener
,但同样不会受到尊重。 (是的,我创建了一个听众。)
答案 0 :(得分:4)
无论您向TableCellRenderer
返回的组件注册了多少个侦听器,它们都永远不会被调用。该组件不包含在表中,但仅用作图章。结果,事件永远不会到达那些听众。这个概念在Swing table tutorial(在渲染器和编辑器部分)中进行了解释。
您可以查看在JTable
中添加可点击按钮的Table Button column示例。可以使用相同的概念在JTable
中包含超链接。
您可能还会发现以下有关"Adding a hyperlink in a JLabel
"有趣的问题。