Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.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_Swing_Jfilechooser - Fatal编程技术网

强制文件已存在的java文件选择器

强制文件已存在的java文件选择器,java,swing,jfilechooser,Java,Swing,Jfilechooser,在谷歌搜索了一段时间后,我并没有看到太多的结果。是否有某种“通用”方法强制用户选择“已存在”的文件 我可以加上 或者像但是有一些规范的方法吗 谢谢。听起来好像你想要一个“打开”的行为,但是一个显示“保存”而不是“打开”的确认按钮 您可以通过以下方法执行此操作: 为approveButtonText参数传入“Save”。首先,您需要检查更好的选项是choser.showOpenDialog还是showSaveDialog “保存”对话框将允许您选择指定路径中的任何名称。它可能是不存在的文件,但“

在谷歌搜索了一段时间后,我并没有看到太多的结果。是否有某种“通用”方法强制用户选择“已存在”的文件

我可以加上 或者像但是有一些规范的方法吗

谢谢。

听起来好像你想要一个“打开”的行为,但是一个显示“保存”而不是“打开”的确认按钮

您可以通过以下方法执行此操作:


为approveButtonText参数传入“Save”。

首先,您需要检查更好的选项是choser.showOpenDialog还是showSaveDialog

“保存”对话框将允许您选择指定路径中的任何名称。它可能是不存在的文件,但“打开”将始终接受所选文件。。您可以安全地添加一个文件.exists(),以确保该文件存在。您还可以更改按钮的文本。。对话等等

JFileChooser chooser = new JFileChooser();
    chooser.setApproveButtonText("Save");
    int result = chooser.showOpenDialog(null);
    if(result == JFileChooser.APPROVE_OPTION){
        File selection = chooser.getSelectedFile();
        //verify if file exists
        if(selection.exists()){
            //you can continue the code here or call the next method or just use !exists and behavior for wrong file
        }else{
            //System.exit(0), show alert.. etc
        }
    }
就这么简单:

JFileChooser fc = new JFileChooser();
while(true)
{
    if(fc.showSaveDialog(null) == JFileChooser.APPROVE_OPTION &&
      !fc.getSelectedFile().exists())
        JOptionPane.showMessageDialog(null, "You must select an existing file!");
    else break;
}

使用setDialogTitle方法将允许您添加类似Eng.Fouad答案中字符串的提示,但使用上面链接的showDialog方法将save按钮标签保留为“save”。