2012-11-17 3 views
1

저는 picLabel이라는 JLabel에서 일부 이미지를 보여야하는 작은 Java 응용 프로그램을 만들고 있습니다.Java 아이콘이 두 번 표시되지 않습니다

나는 Photo 객체의 JList (이미지의 InputStream를 포함하고 데이터베이스에서 읽음)가 있습니다.

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

그것은 내가 목록에서 각 요소를 선택 처음으로 완벽하게 작동합니다 : 여기

는 JList의의 valueChanged 이벤트 리스너의 코드입니다. 그러나 이미 선택된 요소를 다시 선택하면 (이미 이미지가 이미 표시됨) 이전에 JLabel을 그대로두고 이미지를 표시하지 않습니다.

내가 누락 된 항목이 있습니까?

+0

'picLabel'은'JList'와는 다른가요? 나는. 'JList'는 다른 곳에있는 항목을 선택하기위한 것일뿐입니다? –

+0

정확히, 코드에서 누락 된 한 줄을 추가했습니다. 실제로 JList는 Photo 객체 중 하나를 선택하는 데에만 사용됩니다. – Rittmeyer

답변

4

일단 입력 스트림에서 이미지를 한 번 읽으면 스트림이 끝나고 두 번째로 읽는 동안 아무 것도 읽지 않습니다. Photo 클래스는 스트림으로부터 읽어 들여, 읽어 들인 모든 것을 바이트 배열, 또는 BufferedImage 또는 ImageIcon로서 직접 포함 할 필요가 있습니다.

+0

나를 위해 완벽하게 일했습니다. 고마워요! – Rittmeyer

관련 문제