2015-09-27 68 views
0

我需要一些帮助来显示从MySQL到JTable的图像(blob)。我已经研究了一些帮助,我需要包括如何在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){} 
} 

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

回答

1

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