2012-01-31 33 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."); 
    } 
} 
相关问题