Файл, сохраненный с помощью JFileChooser showSaveDialog даже при «Отмена» - PullRequest
0 голосов
/ 31 января 2012

У меня есть сохраненный файл, который отлично работает, кроме одной проблемы. При нажатии кнопки отмены копия файла сохраняется в каталоге 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.");
                }
}

Ответы [ 3 ]

2 голосов
/ 31 января 2012

savePlaylistDialog.showSaveDialog(playlistDialogs);

При вызове указанного выше метода возвращается int.Вам нужно проверить его значение - если пользователь нажмет на кнопку Сохранить, он вернет JFileChooser.ACCEPTED_OPTION.В этом случае вы берете возвращаемое значение (которое можно принять / сохранить или отменить), игнорируете его и продолжаете записывать данные на диск в любом случае.

1 голос
/ 01 февраля 2012

Вот фиксированный код, который я использовал:

    // 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.");
    }
}
0 голосов
/ 31 января 2012

showSaveDialog должен возвращать, отменил ли пользователь или нет, и вы должны действовать соответствующим образом.На данный момент вы сохраняете, независимо от того, что пользователь сделал в диалоговом окне сохранения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...