2014-09-27 4 views
0

사용자가 JButton을 사용하여 디렉토리의 이미지를 탐색 할 수 있도록 Java로 UI를 만들려고합니다. 그러나 JFileChooser를 사용하여 새 이미지를 선택할 때마다 이미지가 서로 추가됩니다. 이전 이미지를 삭제하고 새 이미지를 표시하려면 어떻게합니까?JFileChooser를 사용하여 디렉토리의 파일을 다시 선택하십시오.

나는 또한 다음/이전 버튼을 클릭하여 디렉토리의 다음/이전 이미지로 이동하는 방법을 알아 내려고하고 있습니다. 어떻게해야합니까?

private class ButtonListener implements ActionListener 
{ 
    public void actionPerformed(ActionEvent e) 
    { 
     if(e.getSource() == chooseBtn) 
     { 
      JFileChooser fileChooser = new JFileChooser(); 
      int returnValue = fileChooser.showOpenDialog(null); 
      fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 

      if (returnValue == JFileChooser.APPROVE_OPTION) 
      { 
       File selectedFile = fileChooser.getSelectedFile(); 
       String fileName = selectedFile.toString(); 
       image = new JLabel(new ImageIcon(fileName)); 
       imgPanel.add(image); 
       frame.add(imgPanel, BorderLayout.WEST); 
       frame.repaint(); 
       frame.validate(); 
      } 
     } 
     else if(e.getSource() == nextBtn) 
     { 
      System.out.println("Next"); 
     } 
     else if(e.getSource() == prevBtn) 
     { 
      System.out.println("Previous"); 
     } 
    } 
} 
+3

을 선택 ..change 이미지 아이콘 대신 –

+0

문제는 여기에 무엇? – ControlAltDel

답변

2

여기 problem.you 새로운 레이블을 만들고 이미지가 lables 매번 생성하지 않는 패널

if (returnValue == JFileChooser.APPROVE_OPTION) { 
       File selectedFile = fileChooser.getSelectedFile(); 
       String fileName = selectedFile.toString(); 
       image = new JLabel(new ImageIcon(fileName)); 
       imgPanel.add(image); 
       frame.add(imgPanel, BorderLayout.WEST); 
       frame.repaint(); 
       frame.validate(); 
    } 

에 추가 왜 저놈 패널에 추가 할 수 있습니다 : 다음은 내 ButtonListener 내 코드입니다. 단지 일회성 및 변경 이미지 아이콘 때 왜 새로운 lables을 만들려면 어떻게해야합니까 이미지

////don't repeate this code block 
image = new JLabel(); 
imgPanel.add(image); 
frame.add(imgPanel, BorderLayout.WEST); 
frame.repaint(); 
frame.validate(); 
///////// 

    if (returnValue == JFileChooser.APPROVE_OPTION) { 
       File selectedFile = fileChooser.getSelectedFile(); 
       String fileName = selectedFile.toString(); 
       image.setIcon(new ImageIcon(fileName)); 
       //repaint 
       frame.repaint(); 

    } 
+0

감사합니다! 그것은 일했다 .. – jl90

+0

@ jl90 행운을 빌어 요 !! –