1

picLabelという名前のJLabelでいくつかの画像を表示する必要がある小さなJavaアプリケーションを作成しています。

写真オブジェクトのJListがあります(データベースから読み取られた画像のInputStreamが含まれています)。

JListValueChangedイベントリスナーのコードは次のとおりです。

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は以前の状態のままになります。

私は何かが足りないのですか?

4

1 に答える 1

4

入力ストリームから画像を 1 回読み取ると、ストリームは最後になり、2 回目の読み取りでは何も読み取れません。Photo クラスはストリームから読み取り、読み取ったすべてをバイト配列として、または BufferedImage または ImageIcon として直接格納する必要があります。

于 2012-11-17T13:43:31.543 に答える