Вернуться к определенному диалогу - PullRequest
0 голосов
/ 31 января 2009

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

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

Итак, у меня есть 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;
}

1 Ответ

0 голосов
/ 31 января 2009

А как насчет начала с этой строки:

int returnVal = saveFile.showOpenDialog(null);

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

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