java - 如何在 JTable 中将 blob 显示为图像

标签 java mysql swing jtable imageicon

我需要一些帮助来将图像(blob)从 MySQL 显示到 JTable。我研究了一些需要包含的帮助

jTable.getColumnModel().getColumn().setCellRenderer(jTable.getDefaultRenderer(ImageIcon.class));

这是我的代码:

    String sql = "select idcandidates, 
lastname, 
firstname, 
middlename, 
nickname, 
gender,YEAR(CURRENT_TIMESTAMP) - YEAR(dob) - (RIGHT(CURRENT_TIMESTAMP, 5) < RIGHT(dob, 5)) as age, 
position, 
image from tbl_candidates";
try{
    PreparedStatement ps = conn.prepareStatement(sql);
    ResultSet rs = ps.executeQuery();
    candidateTable.setModel(DbUtils.resultSetToTableModel(rs));
    candidateTable.getColumnModel().getColumn(8).setCellRenderer(candidateTable.getDefaultRenderer(ImageIcon.class));
    candidateTable.setAutoCreateRowSorter(true);
}

catch(Exception e){}
}

但是 table 上没有照片。它只是白色/空白,但是当我点击应该是图像“[B@147cec”显示

最佳答案

您不必为 ImageIcons 设置单元格渲染器,因为默认单元格渲染器已经知道如何显示 ImageIcons。不,您必须做的是获取该 BLOB 并从中创建一个 ImageIcon,而如何执行此操作完全取决于 BLOB 的数据格式。如果它实际上是图像(例如 PNG 文件),则通过其 getBinaryStream() 方法获取其二进制流,并将生成的字节数组传递到 ImageIcon 构造函数中,然后将其添加到 JTable 中。确保 JTable 或其模型知道保存图标的列实际上保存了 Icons,这意味着您应该重写列 getColumnClass() 方法以返回 Icon。

关于java - 如何在 JTable 中将 blob 显示为图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32809590/

相关文章:

java - JPanel 上的永久背景图像

java - 数组实例变量与setter方法摄入无关吗?

java - 配置 JanusGraph 通过 Java 使用 Lucene

Java 语法到 Groovy 语法

MySQL 查询 GROUP_CONCAT 多行

mysql - 如何通过后端通过过滤器获取计数

java - Swing 和 GTK 字体

java - 右键单击 .jsp 文件时,“在服务器上运行”选项未出现在 Eclipse 中

mysql - 如何计算 MySQL 查询内存/CPU 成本

java - paintComponent() 和 JColorChooser