我需要在JFileChooser(打开模式)中显示没有扩展名的文件名。怎么样?

时间:2012-02-08 08:22:43

标签: java swing jfilechooser

我在开放模式下使用'JFileChooser'。我需要显示没有扩展名的“文件名”字段。 怎么样?? 我知道FileView。它删除了文件系统文件中的扩展名,但它在“文件名”字段中的选定文件中保留了扩展名 explanation

这是我的FileView代码:

public class JQSFileView extends FileView{
@Override
    public String getName(File file){
        return FilenameUtils.removeExtension(file.getName());
    }
}

我用这个:

        fc.addPropertyChangeListener(JFileChooser.SELECTED_FILE_CHANGED_PROPERTY, new PropertyChangeListener()
    {
        public void propertyChange(PropertyChangeEvent evt)
        {

            File selectedFile = fc.getSelectedFile();
            String path = selectedFile.getPath();
            path=FilenameUtils.removeExtension(path);
            fc.setSelectedFile(new File(path));

        }
    });

但JFileChooser返回不正确的文件名,当我选择一些文件时,光标总是跳起来

1 个答案:

答案 0 :(得分:2)

根本原因是ui不使用视图名称作为名称字段中的文本。哪个可能或可能是一个好主意,不知道。如果你真的想要,你可以在JFileChooser的子类或PropertyChangeListener中手动完成,这里是一个覆盖:

    fc = new JFileChooser() {

        @Override
        public void setSelectedFile(File file) {
            super.setSelectedFile(file);
            ((BasicFileChooserUI) getUI()).setFileName(getName(file));
        }

    };
    fc.setFileView(new MyView());

修改

outch ...没想到ui的这么多错误行为:-(问题是所有的动作都是根据textField的内容重新创建一个文件对象(而不是使用的selectFile属性) chooser)现在,如果该字符串修剪了扩展名,则找不到该文件。唯一的出路是替换可能无效的操作....

总之,这个答案毫无用处,抱歉。