2012-01-31 71 views
0

我有一個保存的文件,除了一個問題以外,還能正常工作。當按下取消按鈕時,文件的一個副本被保存在java目錄中。只有在按下取消按鈕時纔會發生這種情況,如果使用了保存按鈕,文件就會在用戶選擇的地方結束。我怎樣才能阻止這種情況發生,所以當按下取消按鈕時什麼都不保存在任何地方?使用JFileChooser showSaveDialog保存的文件即使在'取消'上

我的代碼如下,所有幫助表示讚賞。感謝

// Save dialog 
private void savePlaylist() { 
JFileChooser savePlaylistDialog = new JFileChooser(); 
       savePlaylistDialog.setSelectedFile(new File(newPlaylistNameTxt.getText() + ".txt")); 
       savePlaylistDialog.showSaveDialog(playlistDialogs); 
       File savePlaylist = savePlaylistDialog.getSelectedFile(); 

       try { 
        outFile = new PrintWriter(new FileWriter(savePlaylist)); 
        outFile.println(newPlaylistInformationTxt.getText()); 
        outFile.close(); 

        // Plays a sound when play() is called (edited from Bombard) 
        try { 
         Clip saveButtonSound = AudioSystem.getClip(); 
         AudioInputStream ais = AudioSystem.getAudioInputStream(new File("Tri-tone.wav")); 
         saveButtonSound.open(ais); 
         saveButtonSound.start(); 
        } catch (Exception ex) { 
         ex.printStackTrace(); 
        } 
       } catch (Exception ex) { 
        JOptionPane.showMessageDialog(null, "File could not be written, try again."); 
       } 
} 

回答

2

savePlaylistDialog.showSaveDialog(playlistDialogs);

即上述方法調用返回一個int。你需要檢查它的值 - 如果用戶點擊保存按鈕,它將返回JFileChooser.ACCEPTED_OPTION。在這種情況下,您正在獲取返回值(可以接受/保存或取消),忽略它,然後繼續將數據寫入磁盤。

+0

這已經修好了,非常感謝。作爲參考,我已經在下面發佈了我的最終代碼。 – 2012-01-31 13:04:51

0

showSaveDialog應該返回用戶是否取消,並且您的代碼將相應地執行。無論用戶在保存對話框中做了什麼,都可以保存。

1

這裏是我使用的固定代碼:

// Save dialog 
    private void savePlaylist() { 
    JFileChooser savePlaylistDialog = new JFileChooser(); 
    savePlaylistDialog.setSelectedFile(new File(newPlaylistNameTxt.getText() + ".txt")); 
    int status = savePlaylistDialog.showSaveDialog(playlistDialogs); 

    try { 
     if (status == JFileChooser.APPROVE_OPTION) { 
      //User has pressed save button 

      File savePlaylist = savePlaylistDialog.getSelectedFile(); 

      outFile = new PrintWriter(new FileWriter(savePlaylist)); 
      outFile.println(newPlaylistInformationTxt.getText()); 
      outFile.close(); 

      // Plays a sound when play() is called (edited from Bombard) 
      try { 
       Clip saveButtonSound = AudioSystem.getClip(); 
       AudioInputStream ais = AudioSystem.getAudioInputStream(new File("Tri-tone.wav")); 
       saveButtonSound.open(ais); 
       saveButtonSound.start(); 
      } catch (Exception ex) { 
       ex.printStackTrace(); 
      } 
     } else if (status == JFileChooser.CANCEL_OPTION) { 
      // User has pressed cancel button 
     } 
    } catch (Exception ex) { 
     JOptionPane.showMessageDialog(null, "File could not be written, try again."); 
    } 
} 
相關問題