Java图标不会显示两次

时间:2012-11-17 13:22:25

标签: 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保留为之前的状态。

我错过了什么吗?

1 个答案:

答案 0 :(得分:4)

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