Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么是我的;“保存”;按钮不存在';不行?_Java_Actionlistener_Savechanges - Fatal编程技术网

Java 为什么是我的;“保存”;按钮不存在';不行?

Java 为什么是我的;“保存”;按钮不存在';不行?,java,actionlistener,savechanges,Java,Actionlistener,Savechanges,我的程序中有一个最大的问题。我已经创建了Save按钮,但是如果.txt文件是新的,它就会保存(然后该按钮会执行“SaveAs”功能)。但当我打开文件,然后键入一些东西并试图保存,但它不保存:s。有人能帮我吗 代码如下: fileSave.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if(currentFile == null) {

我的程序中有一个最大的问题。我已经创建了Save按钮,但是如果.txt文件是新的,它就会保存(然后该按钮会执行“SaveAs”功能)。但当我打开文件,然后键入一些东西并试图保存,但它不保存:s。有人能帮我吗

代码如下:

fileSave.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        if(currentFile == null) {
            int saveResult = fileSelect.showSaveDialog(null);
            if(saveResult == fileSelect.APPROVE_OPTION) {
                saveFile(fileSelect.getSelectedFile(), field.getText());            
            } else {
                saveFile(currentFile, field.getText());
            }
        }
    }
});

public void saveFile(File file, String contents) {
    BufferedWriter writer = null;
    String filePath = file.getPath();
    if(!filePath.endsWith(".txt")) {
        filePath += ".txt";
    }

    try {
        writer = new BufferedWriter(new FileWriter(filePath));
        writer.write(contents);
        writer.close();
        field.setText(contents);
        setTitle("Editex - " + filePath);
        currentFile = file;
    } catch (Exception e) {

    }
}

当currentFile!=null,这是我假设的情况,当您试图保存一个已经有文件名的文件时

这样做:

if(currentFile == null) {
    // Handle if new file
} else {
    // Handle an existing file
}
移动

进入上述的else部分

目前,它位于
if(currentFile==null)
中,在这里调用
saveFile(null,field.getText())
时,这不是正确的位置



是坏的,永远不要吞咽异常,什么也不做,你永远不会知道异常是否发生,只是什么都不会发生。

你可能吞咽异常吗?千万不要这样做,处理它。您确定在尝试保存现有打开的文件时执行
saveFile
?我假设这个if语句
if(currentFile==null)
不允许调用您的方法?为了更快地获得更好的帮助,请发布一个。在这种情况下,如果字段是
JTextComponent
,它将有一个专门用于保存内容的方法。另外,将形式为
catch(Exception e){..
的代码更改为
catch(Exception e){e.printStackTrace();//非常有用!
非常感谢:)。但它不保存我的“输入”有多好?你的意思是什么,它不保存你的“输入”,你的“输入”是什么意思?它不保存我的“输入”新行按钮您需要解析文本字段的值,以找到换行符并将其添加到输出文件中。有很多示例说明如何在线执行此操作。
saveFile(currentFile, field.getText());
catch(Exception e) {

}