Java 图标不会显示两次

标签 java image swing

我正在制作一个小型 Java 应用程序,它必须在名为 picLabel 的 JLabel 中显示一些图像。

我有一个 Photo 对象的 JList(它包含一个图像的 InputStream,从数据库中读取)。

这是 JList ValueChanged 事件监听器的代码:

private void photoListValueChanged(javax.swing.event.ListSelectionEvent evt) {     
    if (evt.getValueIsAdjusting() == false && photoList.getSelectedIndex() != -1) {
        photo = (Photo) photoList.getSelectedValue();
        BufferedImage image = ImageIO.read(photo.getContent()) ;
        if(image != null) {
            picLabel.setIcon(new ImageIcon(image));
        }
}

第一次从列表中选择每个元素时,它工作得很好。但是,如果我再次选择一个已经被选中的元素(并且图像已经显示),它就不会显示图像,而使 JLabel 保持原样。

我错过了什么吗?

最佳答案

一旦您从输入流中读取了一次图像,该流就结束了,第二次读取将不会读取任何内容。 Photo 类应该从流中读取并将读取的所有内容存储为字节数组,或者直接存储为 BufferedImage 或 ImageIcon。

关于Java 图标不会显示两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13430976/

相关文章:

java - 命令行太长 DataNucleus 工具的标准错误

java - 如何使用嵌入式图像减小 RTF 的大小?

java - 在 Java 中的 actionPerformed 中创建 JLabel

java - 我如何获得真正可用的分辨率

java - JTable Header 包含 Image 并且在该图像之上我想在一个 header 中放置 3 个按钮

java - Jooq/SQL 查找另一列中唯一值的平均值

java - Netbeans 和实体生成

java - 推荐 XML Difference 开源 Java 库吗?

image - 开放ID。如何创建特殊链接

从图库中选择的应用程序中的 iphone 存储图像