views:

482

answers:

1

There are already some questions about how to set a default file name for a JFileChooser control.

I'm having a few problems with preserving that default filename when switching directories. Right now, when I do that, the original filename I supplied get over overwritten by the path of the new directory itself.

Is there anything can be done in order to avoid this behavior?

+1  A: 

You could add a PropertyListener to the file chooser, and if you get a "directoryChanged" property, set your default file again.

For example:

    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" ) );
        }
      }
    });

It seems like it might do what you want, but is more a workaround than a proper solution.

Ash
That doesn't seem to work on Windows 7.When I execute that code, the filename field is not updated with the filename I supply, although the corresponding PropertyChangeEvent (JFileChooser.SELECTED_FILE_CHANGED_PROPERTY) is fired.
abahgat
Ash
Ash
I made a few more tests today, and I actually figured out what is preventing your solution from working.I was calling fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES), and it didn't work because of that.Thank you.
abahgat