繁体   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