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

时间:2015-09-27 15:30:45

标签: java mysql swing jtable imageicon

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

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){}
}

然而桌子上没有图片。它只是白色/空白但当我点击应该是图像&#34; [B @ 147cec&#34;示出了

1 个答案:

答案 0 :(得分:1)

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