我有一个使用DefaultTableModel创建的JTable,我希望在鼠标悬停在该JTable的特定单元格上时显示图像,并且我需要每个单元格的图像不同。
提前致谢
答案 0 :(得分:7)
您可以为单元格/列/行组件覆盖prepareRenderer
和JTable
的{{1}},并为tooltop使用一些HTML,例如here和{ {3}}
对于每个不同的图片,您需要获得与setToolTip
标记的src
不同的网址。您需要知道一些基本的HTML。您可以使用img
为类路径中的图像获取URL。或者,您可以使用getClass().getResource()
在文件系统上获取图像文件。上面的链接之一还显示了如何从关系数据库中获取图像。
无论您获取网址的方式如何,都会将其用于File.getUri().getUrl()
标记中的网址。像(来自链接的答案):
<img src
您需要以某种方式组织图像,您可以从模型中的数据以某种方式对应于可用于获取URL的路径。假设您有一个名称作为表中的一段数据,那么您希望能够使用该名称作为获取URL的标识符
更新
鉴于这是我的以下项目结构
URL url = getClass().getResource("/path/to/image");
String html = "<html><body>"
+ "<img src='"
+ url
+ "' width=150 height=150> ";
jc.setToolTipText(html + "<br/>"
+ getValueAt(row, column).toString()
+ ": row, col (" + row + ", " + column + ")"
+ "</body></html>");
以下作品
ProjectRoot
src
resources
mario
Mario.png
Luigi.png
答案 1 :(得分:1)
您需要使用自定义TableCellRenderer
。
如果您从扩展DefaultTableCellRenderer
的{{1}}继承,则可以使用渲染器的JLabel
方法轻松地引入图像,并为其提供一个包含在setIcon
内的图片。
如果这是您第一次使用渲染器,我建议您阅读以下教程:Custom table renderers