小编典典

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

java

我在开放模式下使用“
JFileChooser”。我需要显示不带扩展名的“文件名”字段。怎么样??我知道FileView。它将删除文件系统文件中的扩展名,但会将扩展名留在“文件名”
说明中的所选文件中

这是我的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返回的文件名不正确,当我选择某些文件时,光标总是跳到上


阅读 270

收藏
2020-11-26

共1个答案

小编典典

根本原因是ui不在name字段中使用视图的名称作为文本。不知道这可能是一个好主意。如果确实需要,可以在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的内容重新创建了一个文件对象(而不是使用选择器的selectedFile属性)如果该字符串的扩展名被修剪,则找不到该文件,唯一的解决方法是替换操作…这可能不起作用。

总之,这个答案是没有用的,对不起。

2020-11-26