7

(事前に感謝します!さらに情報が必要な場合はお知らせください。下部にサンプルコードがあります。)

私が解決しようとしている問題:

accept(File file)オーバーライドメソッドでこれを含むjavax.swing.filechooser.FileFilterオブジェクトを使用して、このJFileChooserオブジェクトにディレクトリのみ(ファイルではなく)を表示させようとしていますreturn file.isDirectory();。ただし、少なくとも私のMacでは、ファイルがディレクトリと一緒に表示されるのを妨げているようには見えません(setFileSelectionMode()メソッドを使用せずにファイルを選択するのを妨げています)。

質問

私は何かが足りないのですか?そうでない場合、これまでに誰かがこれに遭遇したことがありますか?

私の理解/仮定:

  1. この魔法は、javax.swing.filechooser.FileFilterオブジェクトをJFileChooserのsetFileFilter()メソッドに渡すときに発生するはずです。
  2. setFileFilter()を使用したJFileChooserは、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";
  }
}

ありがとう!

アレックス

4

1 に答える 1

15

あなたのコードは私のために働きます。私のSSCCE

import java.io.File;
import javax.swing.JFileChooser;

public class ShowDirectoriesOnly {
   public static void main(String[] args) {
      JFileChooser fileChooser = new JFileChooser( "." );
      fileChooser.setControlButtonsAreShown( false );
      fileChooser.setFileFilter( new FolderFilter() );
      fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
      fileChooser.showOpenDialog(null);
   }

   private static 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";
      }
    }
}

それでも問題が解決しない場合は、問題を示す独自のSSCCEを作成するのが最善です。

編集

JDK1.7を使用したOSXでの外観のスクリーンショット

OSXのスクリーンショット

于 2012-04-07T16:01:24.583 に答える