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