带有确认对话框的 JFileChooser

2022-09-01 00:24:06

我正在开发一个从文本文件中加载和保存数据的程序,并且我正在向用户询问一个在加载和保存时使用JFileChooser的文件名。

此问题与保存对话框有关:。然后,用户可以在没有任何警告的情况下覆盖现有文件,这将是一个问题new JFileChooser().showSaveDialog();

关于如何解决这个问题的任何建议?我一直在寻找一些方法或选择,但我没有找到任何东西。

提前致谢。


答案 1

感谢您的回答,但我找到了另一种解决方法,覆盖了JFileChooser的 approveSelection(),这样:

JFileChooser example = new JFileChooser(){
    @Override
    public void approveSelection(){
        File f = getSelectedFile();
        if(f.exists() && getDialogType() == SAVE_DIALOG){
            int result = JOptionPane.showConfirmDialog(this,"The file exists, overwrite?","Existing file",JOptionPane.YES_NO_CANCEL_OPTION);
            switch(result){
                case JOptionPane.YES_OPTION:
                    super.approveSelection();
                    return;
                case JOptionPane.NO_OPTION:
                    return;
                case JOptionPane.CLOSED_OPTION:
                    return;
                case JOptionPane.CANCEL_OPTION:
                    cancelSelection();
                    return;
            }
        }
        super.approveSelection();
    }        
}

我希望这对其他人有用。


答案 2

正如 AvrDragon 所说,不处理用 X 关闭的问题。我添加了一个默认大小写来处理所有不相关的选项:

final JFileChooser fc = new JFileChooser() {

        private static final long serialVersionUID = 7919427933588163126L;

        public void approveSelection() {
            File f = getSelectedFile();
            if (f.exists() && getDialogType() == SAVE_DIALOG) {
                int result = JOptionPane.showConfirmDialog(this,
                        "The file exists, overwrite?", "Existing file",
                        JOptionPane.YES_NO_CANCEL_OPTION);
                switch (result) {
                case JOptionPane.YES_OPTION:
                    super.approveSelection();
                    return;
                case JOptionPane.CANCEL_OPTION:
                    cancelSelection();
                    return;
                default:
                    return;
                }
            }
            super.approveSelection();
        }
    };

推荐