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

这个问题可能在这里被问过几次,但我发现其中一些未解决

期望的输出:

如果我单击任何包含图像的特定行,那么它应该在 中显示图像JLabel,但是如果该行不包含图像,那么标签应该显示“没有可用的照片”。

下面是我目前用来显示图像的代码JTablejlabelPhoto

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");

}

此代码允许我使用比例将图像正确显示到标签中,但问题是如果我单击其中没有图像的行,那么上一个图像仍然出现在标签上。

BIG阳
浏览 227回答 1
1回答

芜湖不芜

您的问题可能是因为您忘记在 else 块中将 JLabel 的图标设置为 null:} else {    jLabelPhoto.setText("No Photo Available");    jLabelPhoto.setIcon(null);  // need to add this}如果这不能解决问题,那么您可能需要调试 if 块条件:if(EmpDBTable.getValueAt(getData, 12) != null) {也许保存的数据不是图像,但也不为空,但由于您保存了所有数据和代码,因此如果需要,将由您自行调试。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java