2009-01-30 5 views
0

J'écris un éditeur de texte très simple et j'ai rencontré un problème mineur. Code ci-dessousRetour à une boîte de dialogue spécifique

Lors de l'enregistrement d'un fichier, lorsqu'un fichier existe, l'utilisateur sera invité à remplacer, annuler ou ne pas écraser (en ayant l'option d'essayer à nouveau).

j'ai donc une JFileChooser qui invite l'utilisateur à remplacer: oui, non, annuler

Dans le cas de non être sélectionné, il doit revenir à la boîte de dialogue JFileChoose, mais je tout simplement ne savent pas Comment. Quelqu'un peut-il m'aider à ce sujet? L'annulation et oui options ne sont pas des problèmes (pour autant que je sache, ne l'ont pas testé en profondeur)

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; 
} 

Répondre

0

Qu'en est-recommençant à cette ligne:

int returnVal = saveFile.showOpenDialog(null); 

à nouveau, quand vous devriez retourner au JFileChooser? Je suppose que le même sélecteur de fichier afficherait son dialogue ouvert à nouveau alors?

+0

Wow, ça craint. Merci homme - Sent horrible détruire ce code, mais vous êtes mort. Je n'ai jamais regardé beaucoup dans JChooseFile - juste allé par l'exemple –

Questions connexes