将鼠标悬停在jtable单元格上时显示图像

时间:2014-05-12 06:12:35

标签: java image swing jtable defaulttablemodel

我有一个使用DefaultTableModel创建的JTable,我希望在鼠标悬停在该JTable的特定单元格上时显示图像,并且我需要每个单元格的图像不同。

提前致谢

2 个答案:

答案 0 :(得分:7)

您可以为单元格/列/行组件覆盖prepareRendererJTable的{​​{1}},并为tooltop使用一些HTML,例如here和{ {3}}

enter image description here

对于每个不同的图片,您需要获得与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