[英]How to display Image form JTable into JLabel or from database to JLabel using JTable mouse click event?
在這里可能已經問過幾次這個問題,但是我發現其中一些問題未解決。 從mysql列檢索圖像到jlabel或jtable 。
所需輸出:
如果單擊包含圖像的任何特定行,則該行應在JLabel
顯示該圖像,但是如果該行不包含圖像,則該標簽應顯示“無可用照片”。
下面是我當前用來顯示從JTable
到jlabelPhoto
的圖像的jlabelPhoto
。
if(EmpDBTable.getValueAt(getData, 12) != null){
try {
byte[] byteArray = (byte[]) EmpDBTable.getValueAt(getData, 12);
ByteArrayInputStream bais = newByteArrayInputStream(byteArray);
BufferedImage bImg = ImageIO.read(bais);
ImageIcon icon = new ImageIcon(bImg.getScaledInstance(jLabelPhoto.getWidth(), jLabelPhoto.getHeight(), Image.SCALE_SMOOTH));
jLabelPhoto.setIcon(icon);
bais.close();
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
}
}else{
jLabelPhoto.setText("No Photo Available");
}
此代碼使我可以按比例正確地將圖像顯示到標簽中,但是問題是,如果單擊其中沒有圖像的行,則先前的圖像仍會出現在標簽上。
這是視頻的附件鏈接,以進行適當的說明。 https://vimeo.com/user101485383/review/351884404/57a10f86af
您的問題可能是因為您忘記在else塊中將JLabel的Icon設置為null:
} else {
jLabelPhoto.setText("No Photo Available");
jLabelPhoto.setIcon(null); // need to add this
}
如果這不能解決問題,則您可能需要調試if塊條件:
if(EmpDBTable.getValueAt(getData, 12) != null) {
也許保存的數據不是圖像,也不是空值,但是由於您保存了所有數據和代碼,因此如果需要的話,您可以自行調試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.