0

1 つの問題を除けば正常に動作するファイルが保存されています。キャンセル ボタンが押されると、ファイルのコピーが 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.");
                }
}
4

3 に答える 3

2

savePlaylistDialog.showSaveDialog(playlistDialogs);

上記のメソッド呼び出しは を返しますint。その値を確認する必要があります。ユーザーが [保存] ボタンをクリックすると、 が返されJFileChooser.ACCEPTED_OPTIONます。この場合、戻り値 (受け入れ/保存またはキャンセル) を取得し、それを無視して、とにかくデータをディスクに書き込みます。

于 2012-01-31T12:47:31.767 に答える
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.");
    }
}
于 2012-01-31T20:47:41.373 に答える
0

showSaveDialog は、ユーザーがキャンセルしたかどうかを返す必要があり、それに応じてコードを実行する必要があります。現時点では、ユーザーが保存ダイアログで何をしたかに関係なく、保存します。

于 2012-01-31T12:48:19.133 に答える