簡體   English   中英

使用JFileChooser showSaveDialog保存的文件,即使在“取消”時也是如此

[英]File saved with JFileChooser showSaveDialog even on 'Cancel'

我保存的文件可以很好地解決一個問題。 當按下取消按鈕時,文件副本將保存在java目錄中。 這僅在按下“取消”按鈕時發生,如果使用了“保存”按鈕,則文件最終會在用戶選擇的位置結束。 我該如何阻止這種情況發生,所以當按下“取消”按鈕時,什么都不會保存?

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

    // 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.");
                }
}

savePlaylistDialog.showSaveDialog(playlistDialogs);

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

這是我使用的固定代碼:

    // 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.");
    }
}

showSaveDialog應該返回用戶是否已取消,並且您的代碼應相應執行。 現在,無論用戶在保存對話框中執行了什么操作,都將保存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM