2014-02-07 7 views
0

Здравствуйте, у меня возникла небольшая проблема с моим текстовым редактором, например программой. Я хотел бы, чтобы моя функция сохранения сохранялась только в том случае, если была вызвана функция «Сохранить как», и если вызывается «Сохранить», она добавляет текст из JTextArea в файл, созданный «Сохранить как». Я использую ActionListeners из JMenuItems для вызова Save и Save As Actions. Вот код для Save As:Как сохранить, сохранить как Java?

FileDialog fileDialogSave = new FileDialog(frame, "Save", FileDialog.SAVE); 
fileDialogSave.setVisible(true);   
String userProjectSavePath = fileDialogSave.getDirectory() + fileDialogSave.getFile(); 
File userProjectSave = new File(userProjectSavePath); 
try (PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(userProjectSave, true)))) { 
userProjectSave.createNewFile(); 
String userProjectNameToSave = codeArea.getText(); 
out.println(userProjectNameToSave); 
} catch (IOException e1) { 
    e1.printStackTrace(); 
} 

Как Сохранить и Сохранить как вкладываются static class ActionSaveAs implements ActionListener { public void actionPerformed(ActionEvent e) { ... } }

Проблема в том, что я не могу получить доступ к строке userProjectSavePath в классе Сохранить поэтому я не могу присоединить новый текст в тот же файл, что и в Save As.

+0

Для получения более полной помощи, отправьте сообщение [MCTaRE] (http://stackoverflow.com/help/mcve) (минимальный полный протестированный и читаемый пример). –

ответ

1

Вместо этого позвольте вашему условному методу saveDocument() вызывать saveDocumentAs(), если currentFile is null. Следующий план предлагает подход, принятый в Charles Bell's HTMLDocumentEditor, цитируется here.

public void saveDocument() { 
    if (currentFile != null) { 
     // Save in currentFile 
    } else { 
     saveDocumentAs(); 
    } 
} 

public void saveDocumentAs() { 
    // Check before overwriting existing file 
} 
Смежные вопросы