这个问题可能在这里被问过几次,但我发现其中一些未解决期望的输出:如果我单击任何包含图像的特定行,那么它应该在 中显示图像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) {
也许保存的数据不是图像,但也不为空,但由于您保存了所有数据和代码,因此如果需要,将由您自行调试。
添加回答
举报
0/150
提交
取消