为什么我的“保存”按钮不起作用?

时间:2013-11-30 07:39:44

标签: java actionlistener savechanges

我的程序中存在一个最大的问题。我已经创建了“保存”按钮,但如果.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) {

    }
}

1 个答案:

答案 0 :(得分:2)

当currentFile!= null时,你没有处理,这是我假设你尝试保存已经有文件名的文件的情况。

做这样的事情:

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

移动

saveFile(currentFile, field.getText());

进入上面的else部分if else。

目前你在if(currentFile == null)内有这个,并且这不是正确的地方,因为你在这里打电话给saveFile(null, field.getText())


另外

catch(Exception e) {

}

很糟糕,永远不会吞下异常并且不做任何事情,你永远不会知道异常是否发生,什么也不会发生。