Filechooser只显示文件而不允许用户创建自己的文件

时间:2013-05-01 00:27:18

标签: java swing user-interface

在oracle教程之后,这段代码应该创建一个文件选择器:

public File getFileAddress() {
    JFileChooser chooser = new JFileChooser();
    //chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
    int returnVal = chooser.showOpenDialog(this);
    if(returnVal == JFileChooser.APPROVE_OPTION) {
       return chooser.getSelectedFile();
    }
    return null;
}

这应该是这样的:

enter image description here

然而,在mac上工作,我明白了: enter image description here

当我想得到的是这个: enter image description here

那么我如何通过java获得我想要的东西,因为它似乎无法正常工作。

1 个答案:

答案 0 :(得分:6)

您在JFileChooser上使用showOpenDialog。为了显示另存为tetbox,您可能希望使用showSaveDialog

public File getFileAddress() {
    JFileChooser chooser = new JFileChooser();
    //chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
    int returnVal = chooser.showSaveDialog(this);
    if(returnVal == JFileChooser.APPROVE_OPTION) {
       return chooser.getSelectedFile();
    }
    return null;
}

一般来说,在打开文件时,您不希望让用户创建自己的文件,因为如果您决定从中读取它,这可能会导致IOExceptions的复杂化,因此我认为它正在制作OpenDialogs上的选项。

要将JFileChooser限制为某些文件,您可以使用FileNameExtensionFilter您需要放置

chooser.setFileFilter(new FileNameExtensionFilter("RTF FIles", ".rtf"));
在创建JFileChooser之后

要确保保存文件上的此文件类型,您必须手动修复它,稍微操作字符串操作:

String fileName = chooser.getSelectedFile().getAbsolutePath();
if(!fileName.endWith(".rtf"))fileName += ".rtf";
return new File(fileName);