Вернуться к определенному диалогу

Я пишу очень простой текстовый редактор и столкнулся с небольшой проблемой. Код ниже

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

Итак, у меня есть JFileChooser, который предложит пользователю перезаписать: да, нет, отменить

В случае, если он не выбран, он должен вернуться в диалоговое окно JFileChoose, но я просто не знаю, как это сделать. Может ли кто-нибудь помочь мне в этом? Варианты отмены и да не вызывают проблем (насколько я знаю, подробно не проверял)

String contents = textArea.getText();
if (openPath != null) {
    savePath = openPath;                    
} else if (saveAsPath != null) {
    savePath = saveAsPath;
} else if (savePath != null) {
    savePath = savePath;
} else if (openPath == null) {
    JFileChooser saveFile = new JFileChooser();
    int returnVal = saveFile.showOpenDialog(null);
    if (returnVal == saveFile.APPROVE_OPTION) {
        savePath = saveFile.getSelectedFile();
        if (!savePath.exists()) {
        FileWriter fstream = new FileWriter (savePath);
        BufferedWriter saveWrite = new BufferedWriter(fstream);
        saveWrite.write(contents);
        saveWrite.close();
        } else if (savePath.exists()) {
            JOptionPane overwritePrompt = new JOptionPane();
            Object[] options = {"Yes","No","Cancel"};
            int n = JOptionPane.showOptionDialog(overwritePrompt,
               "Already exists. Overwrite?","Overwrite File?", 
               JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.WARNING_MESSAGE,
               null,options,options[2]);
        if (n == 0) {
        FileWriter fstream = new FileWriter(saveAsPath);
        BufferedWriter out = new BufferedWriter(fstream);
        out.write(contents);
        out.close();
        } else if (n == 1) {
            savePath = null;
            openPath = null;
            saveAsPath = null;
            return; // should return to JFileChooser
        } else {
                savePath = null;
            openPath = null;
            saveAsPath = null;
            return;
        }
    }
} else {
    return;
}

person Community    schedule 30.01.2009    source источник


Ответы (1)


Как насчет того, чтобы начать сначала с этой строки:

int returnVal = saveFile.showOpenDialog(null);

опять же, когда вы должны вернуться к JFileChooser? Я предполагаю, что тогда тот же выбор файлов снова отобразит диалоговое окно открытия?

person Yngve Sneen Lindal    schedule 30.01.2009
comment
Вау, это отстой. Спасибо, чувак. Ужасно уничтожать этот код, но ты абсолютно прав. Я никогда особо не изучал JChooseFile - просто взял пример - person ; 31.01.2009