为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 JTable 鼠标单击事件将图像从 JTable 显示到 JLabel 或从数据库显示到

如何使用 JTable 鼠标单击事件将图像从 JTable 显示到 JLabel 或从数据库显示到

BIG阳 2023-05-17 14:51:04
这个问题可能在这里被问过几次,但我发现其中一些未解决期望的输出:如果我单击任何包含图像的特定行,那么它应该在 中显示图像JLabel,但是如果该行不包含图像,那么标签应该显示“没有可用的照片”。下面是我目前用来显示图像的代码JTable行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");}此代码允许我使用比例将图像正确显示到标签中,但问题是如果我单击其中没有图像的行,那么上一个图像仍然出现在标签上。
查看完整描述

1 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

您的问题可能是因为您忘记在 else 块中将 JLabel 的图标设置为 null:


} else {

    jLabelPhoto.setText("No Photo Available");

    jLabelPhoto.setIcon(null);  // need to add this

}

如果这不能解决问题,那么您可能需要调试 if 块条件:


if(EmpDBTable.getValueAt(getData, 12) != null) {

也许保存的数据不是图像,但也不为空,但由于您保存了所有数据和代码,因此如果需要,将由您自行调试。


查看完整回答
反对 回复 2023-05-17
  • 1 回答
  • 0 关注
  • 161 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号