您好,我的文本编辑器就像程序一样有点问题。我希望仅在调用另存为时保存我的保存功能,并且如果调用保存它将文本从JTextArea附加到由另存为创建的文件。我正在使用JMenuItems中的ActionListeners来调用Save和Save As Actions。以下是另存为的代码:
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) { ... } }
问题是我无法访问Save类中的String userProjectSavePath,因此我无法将新文本附加到与另存为中相同的文件中。
答案 0 :(得分:1)
相反,如果saveDocument()
为saveDocumentAs()
,请让您的名义currentFile
方法调用null
。以下大纲提出了Charles Bell的HTMLDocumentEditor
采用的方法,引用here。
public void saveDocument() {
if (currentFile != null) {
// Save in currentFile
} else {
saveDocumentAs();
}
}
public void saveDocumentAs() {
// Check before overwriting existing file
}