2015-09-27 65 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()以返回圖標。