Java JFileChooser.showSaveDialog(…;)-更改目录后保留建议的文件名

Java JFileChooser.showSaveDialog(…;)-更改目录后保留建议的文件名,java,swing,jfilechooser,Java,Swing,Jfilechooser,关于如何为JFileChooser控件设置一个参数,已经存在一些问题 切换目录时,保留默认文件名时,我遇到了一些问题。 现在,当我这样做时,我提供的原始文件名会被新目录本身的路径覆盖 有什么方法可以避免这种行为吗?您可以向文件选择器添加PropertyListener,如果您得到“directoryChanged”属性,请再次设置默认文件 例如: JFileChooser chooser = new JFileChooser(); chooser.addPropertyChang

关于如何为JFileChooser控件设置一个参数,已经存在一些问题

切换目录时,保留默认文件名时,我遇到了一些问题。 现在,当我这样做时,我提供的原始文件名会被新目录本身的路径覆盖


有什么方法可以避免这种行为吗?

您可以向文件选择器添加PropertyListener,如果您得到“directoryChanged”属性,请再次设置默认文件

例如:

    JFileChooser chooser = new JFileChooser();
    chooser.addPropertyChangeListener( new PropertyChangeListener() {
      public void propertyChange( PropertyChangeEvent evt )
      {
        if ( evt.getPropertyName().equals( "directoryChanged" ) )
        {
          JFileChooser me = (JFileChooser)evt.getSource(); 
          me.setSelectedFile( new File( "text.txt" ) );
        }
      }
    });

它似乎可以满足您的需要,但与其说是一个合适的解决方案,不如说是一种变通方法。

您可以向文件选择器添加一个PropertyListener,如果您获得了“directoryChanged”属性,请重新设置默认文件

例如:

    JFileChooser chooser = new JFileChooser();
    chooser.addPropertyChangeListener( new PropertyChangeListener() {
      public void propertyChange( PropertyChangeEvent evt )
      {
        if ( evt.getPropertyName().equals( "directoryChanged" ) )
        {
          JFileChooser me = (JFileChooser)evt.getSource(); 
          me.setSelectedFile( new File( "text.txt" ) );
        }
      }
    });

它似乎可以满足您的需要,但与其说是一个合适的解决方案,不如说是一种变通方法。

这在Windows 7上似乎不起作用。当我执行该代码时,虽然触发了相应的PropertyChangeEvent(JFileChooser.SELECTED\u FILE\u CHANGED\u属性),但文件名字段不会用我提供的文件名更新。我使用的是具有默认外观的Vista。你用的是什么L&F?嘿,abahgat,我在Vista上用System和Nimbus L&F试过了,效果不错,所以是的,很可能是你建议的win7,而不是L&F。我将在周四访问Windows 7框进行试用,但如果在此之前解决了问题,请发表评论或其他内容。我今天又做了一些测试,我确实找到了阻止您的解决方案工作的原因。我正在调用fc.setFileSelectionMode(JFileChooser.FILES_和_目录),因此它无法工作。谢谢。这在Windows7上似乎不起作用。当我执行该代码时,虽然触发了相应的PropertyChangeEvent(JFileChooser.SELECTED\u FILE\u CHANGED\u属性),但文件名字段不会用我提供的文件名更新。我使用的是具有默认外观的Vista。你用的是什么L&F?嘿,abahgat,我在Vista上用System和Nimbus L&F试过了,效果不错,所以是的,很可能是你建议的win7,而不是L&F。我将在周四访问Windows 7框进行试用,但如果在此之前解决了问题,请发表评论或其他内容。我今天又做了一些测试,我确实找到了阻止您的解决方案工作的原因。我正在调用fc.setFileSelectionMode(JFileChooser.FILES_和_目录),因此它无法工作。非常感谢。