根本原因是ui不在name字段中使用视图的名称作为文本。不知道这可能是一个好主意。如果确实需要,可以在JFileChooser的子类或Propertychangelistener中手动进行操作,这里有一个替代:
fc = new JFileChooser() {@Overridepublic void setSelectedFile(File file) { super.setSelectedFile(file); ((BasicFileChooserUI) getUI()).setFileName(getName(file));} }; fc.setFileView(new MyView());
outch…没想到ui会有如此多的错误行为:-(问题是,所有操作都基于textField的内容重新创建了一个文件对象(而不是使用选择器的selectedFile属性)如果该字符串的扩展名被修剪,则找不到该文件,唯一的解决方法是替换操作…这可能不起作用。
总之,这个答案是没有用的,对不起。
解决方法我在开放模式下使用“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返回的文件名不正确,当我选择某些文件时,光标总是跳到上