文件名输入*或?, 原本的filter是[*.xml],点保存按钮之后,filter的内容就变成了带*或?的文件名。
重写了JFileChooser的approveSelect方法,可是当输入*或?时,该方法根本不执行。
请高手指教  

解决方案 »

  1.   

    你是想禁止用户输入*或者?来改变FileFilter吗?final JFileChooser chooser = new JFileChooser();
    final FileFilter fileFilter = new FileFilter() {
    @Override
    public boolean accept(File f) {
    return f.isDirectory() || f.getName().endsWith(".xml");
    } @Override
    public String getDescription() {
    return "*.xml";
    }
    };
    chooser.setFileFilter(fileFilter);
    chooser.addPropertyChangeListener("fileFilterChanged", new PropertyChangeListener() {
    public void propertyChange(PropertyChangeEvent evt) {
    if(evt.getNewValue() != fileFilter)
    chooser.setFileFilter(fileFilter);
    }
    });
    chooser.showSaveDialog(null);
      

  2.   

    "fileFilterChanged" 是哪个类的静态常量吗
      

  3.   

    不是啊,JFileChooser有一个fileFilter属性,它被修改了就是fileFilterChanged事件啊
      

  4.   

    当然你用JFileChooser.FILE_FILTER_CHANGED_PROPERTY也行