簡體   English   中英

如何使用JTable鼠標單擊事件將圖像形式的JTable顯示到JLabel或從數據庫顯示到JLabel?

[英]How to display Image form JTable into JLabel or from database to JLabel using JTable mouse click event?

在這里可能已經問過幾次這個問題,但是我發現其中一些問題未解決。 從mysql列檢索圖像到jlabel或jtable

所需輸出:

如果單擊包含圖像的任何特定行,則該行應在JLabel顯示該圖像,但是如果該行不包含圖像,則該標簽應顯示“無可用照片”。

下面是我當前用來顯示從JTablejlabelPhoto的圖像的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM