[英]JFileChooser.showSaveDialog(…) - how to set suggested file name
[英]How to save a file using JFileChooser.showSaveDialog?
我正在用Java创建一个文本编辑器,我的保存功能并不像我想要的那样工作。 这是我用来保存文件的代码:
public void actionPerformed(ActionEvent event) {
String filename = JOptionPane.showInputDialog("Name this file");
JFileChooser savefile = new JFileChooser();
savefile.setSelectedFile(new File(filename));
savefile.showSaveDialog(savefile);
BufferedWriter writer;
int sf = savefile.showSaveDialog(null);
if(sf == JFileChooser.APPROVE_OPTION){
try {
writer = new BufferedWriter(new FileWriter(filename,
false));
text.write(writer);
writer.close();
JOptionPane.showMessageDialog(null, "File has been saved","File Saved",JOptionPane.INFORMATION_MESSAGE);
// true for rewrite, false for override
} catch (IOException e) {
e.printStackTrace();
}
}else if(sf == JFileChooser.CANCEL_OPTION){
JOptionPane.showMessageDialog(null, "File save has been canceled");
}
}
当我单击保存按钮时,弹出窗口,我选择要保存的位置。 单击“保存”后,再次打开窗口并保存到Eclipse Workspce。 我用Google搜索互联网,没有人遇到同样的问题。
我认为问题是你永远不会选择所选文件 。 您只需在硬编码名称后创建的文件上设置SelectedFile。 之后,您在这些文件上实例化一个编写器,但问题是没有采用所选文件。 实际上,您要写入的文件是File(filename),它是在项目的根目录中创建的。
尝试将此添加到您的try块:
writer = new BufferedWriter(new FileWriter(saveFile.getSelectedFile()));
这是:
writer = new BufferedWriter(new FileWriter(filename,
false));
这是因为你写道:
savefile.showSaveDialog(savefile);
并且:
int sf = savefile.showSaveDialog(null);
( 两次 )。 你只需要删除:
savefile.showSaveDialog(savefile);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.