JFileChooser.showSaveDialog(…) - сохранить предложенное имя файла после смены каталога

Уже есть некоторые вопросы о том, как установить имя файла по умолчанию для элемента управления JFileChooser.

У меня возникли проблемы с сохранением имени файла по умолчанию при переключении каталогов. Прямо сейчас, когда я это делаю, исходное имя файла, которое я указал, перезаписывается путем самого нового каталога.

Можно ли что-то сделать, чтобы избежать такого поведения?


person abahgat    schedule 12.12.2009    source источник


Ответы (1)


Вы можете добавить 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" ) );
        }
      }
    });

Кажется, что он может делать то, что вы хотите, но это скорее обходной путь, чем правильное решение.

person Ash    schedule 12.12.2009
comment
Похоже, это не работает в Windows 7. Когда я выполняю этот код, поле имени файла не обновляется именем файла, которое я указываю, хотя соответствующее событие PropertyChangeEvent (JFileChooser.SELECTED_FILE_CHANGED_PROPERTY) запускается. - person abahgat; 13.12.2009
comment
Я использовал Vista с внешним видом по умолчанию. Какой L&F вы используете? - person Ash; 14.12.2009
comment
Привет, abahgat, я попробовал это с System и Nimbus L&F на Vista, и все работает нормально, так что да - скорее всего, это Win7, как вы предлагаете, а не L&F. В четверг у меня будет доступ к коробке Windows 7, чтобы попробовать ее, но если вы решите ее раньше, пожалуйста, напишите комментарий или что-то в этом роде. - person Ash; 15.12.2009
comment
Сегодня я провел еще несколько тестов и выяснил, что мешает вашему решению работать. Я вызывал fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES), и из-за этого это не сработало. Спасибо. - person abahgat; 16.12.2009