2014-09-27 63 views
0

我正嘗試在Java中創建一個UI,以便用戶只需使用JButton即可瀏覽目錄中的圖像。但是,無論何時使用JFileChooser選擇新圖像,圖像都會相互追加。我如何刪除以前的圖片並顯示新圖片?使用JFileChooser重新選擇目錄中的文件

我也想弄清楚如何通過點擊下一個/上一個按鈕來進入目錄中的下一個/上一個圖像。我如何實現這一目標?下面是我爲我的ButtonListener代碼:

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的ImageIcon代替 – 2014-09-27 15:51:13

+0

有什麼問題嗎? – ControlAltDel 2014-09-27 15:53:12

回答

2

這裏是problem.you創造新的標籤,並添加到面板。那就是爲什麼圖像追加到面板

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

不創建標貼各一次。只是一次性的和變化的圖像圖標時選擇圖像

////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 2014-09-27 16:04:29

+0

@ jl90祝你好運! – 2014-09-27 16:05:07