Java JFileChooser.showSaveDialog(…)-如何设置建议的文件名

Java JFileChooser.showSaveDialog(…)-如何设置建议的文件名,java,swing,jfilechooser,Java,Swing,Jfilechooser,JFileChooser似乎缺少一个功能:在保存文件时建议文件名的一种方法(通常会选中此项,以便在用户开始键入时将其替换) 有办法解决这个问题吗?如果我理解正确,您需要使用setSelectedFile方法 JFileChooser jFileChooser = new JFileChooser(); jFileChooser.setSelectedFile(new File("fileToSave.txt")); jFileChooser.showSaveDialog(parent); 该文

JFileChooser
似乎缺少一个功能:在保存文件时建议文件名的一种方法(通常会选中此项,以便在用户开始键入时将其替换)


有办法解决这个问题吗?

如果我理解正确,您需要使用
setSelectedFile
方法

JFileChooser jFileChooser = new JFileChooser();
jFileChooser.setSelectedFile(new File("fileToSave.txt"));
jFileChooser.showSaveDialog(parent);
该文件不需要存在


编辑:如果您传递一个具有绝对路径的文件,
JFileChooser
将尝试将其自身定位到该目录中(如果存在)。

如果这不起作用,下面是一个解决方法:

dialog.getUI().setFileName( name )

但是您应该检查选择模式是仅为
文件
还是
文件和目录
。如果它是
目录\u仅
,则
setSelectedFile()
将删除文件名。

setSelectedFile不能与上述目录一起使用,需要一种解决方案

    try {
        FileChooserUI fcUi = fileChooser.getUI();
        fcUi.setSelectedFile(defaultDir);
        Class<? extends FileChooserUI> fcClass = fcUi.getClass();
        Method setFileName = fcClass.getMethod("setFileName", String.class);
        setFileName.invoke(fcUi, defaultDir.getName());
    } catch (Exception e) {
        e.printStackTrace();
    }
试试看{
FileChooserUI fcUi=fileChooser.getUI();
fcUi.setSelectedFile(defaultDir);

CLASS您将如何访问该对话框?它是私有的,在
showsavedilog()
中当场创建,并在显示后立即释放,仍然在该函数中。在Mac 10.3.4/Java 1.4.2中为我工作