Java JFileChooser с фильтром для предположительного отображения ТОЛЬКО каталогов не показывает только каталоги

(Заранее спасибо! Пожалуйста, дайте мне знать, если вам нужна дополнительная информация. Пример кода на Нижний.)

Проблема, которую я пытаюсь решить:

Я пытаюсь заставить этот объект JFileChooser отображать только каталоги (а не файлы) с помощью объекта javax.swing.filechooser.FileFilter, который имеет это в переопределенном методе accept(File file): return file.isDirectory();. Однако, по крайней мере, на моем Mac это не мешает отображать файлы вместе с каталогами (это предотвращает выбор файлов без использования метода setFileSelectionMode()).

Вопрос

Я что-то упустил? Если нет, то сталкивался ли кто-нибудь с этим раньше?

Мое понимание/предположения:

  1. Волшебство должно произойти, когда вы передаете объект javax.swing.filechooser.FileFilter в метод JFileChooser setFileFilter().
  2. Похоже, мой JFileChooser с setFileFilter() ведет себя так же, как при использовании setSelectionMode( JFileChooser.DIRECTORIES_ONLY );

Код

import java.io.File;
import javax.swing.filechooser.FileFilter;

// inside a method that's adding this to a JPanel

_fileChooser = new JFileChooser( "." );
_fileChooser.setControlButtonsAreShown( false );
_fileChooser.setFileFilter( new FolderFilter() );
// _fileChooser.setFileSelectionMode( JFileChooser.DIRECTORIES_ONLY );
_panelMidLeft.add( _fileChooser );

// an inner class, defined somewhere else in the class

private class FolderFilter extends javax.swing.filechooser.FileFilter {
  @Override
  public boolean accept( File file ) {
    return file.isDirectory();
  }

  @Override
  public String getDescription() {
    return "We only take directories";
  }
}

Спасибо!

Алексей

7
задан Alex Ku 7 April 2012 в 15:54
поделиться