2

JFileChooser を使用して、この名前形式のファイルを選択しようとしています: LS48*.drv。同時に、ユーザーがc:\dataなどの特定のディレクトリのみを調べるように制限したいと考えています。したがって、ユーザーがディレクトリを変更したり、他のドライブ名に変更したりしたくありません。以下の私のコード セグメントのベースから、いくつかのヒントを教えてください。

 m_fileChooser = new JFileChooser("c:\\data"); // looking for LS48*.drv files
  m_fileChooser.setFileFilter(new FileNameExtensionFilter("drivers(*.drv, *.DRV)", "drv", "DRV"));
4

2 に答える 2

6

独自のサブクラスを実装し、FileFilterこれをインスタンスではなくファイル チューザーに設定する必要がありFileNameExtensionFilterます。

acceptこのサブクラスのメソッドは次のようになります。

private static final Pattern LSDRV_PATTERN = Pattern.compile("LS48.*\\.drv");
public boolean accept(File f) {
    if (f.isDirectory()) {
        return false;
    }

    return LSDRV_PATTERN.matcher().matches(f.getName());

}
于 2012-05-25T22:05:55.703 に答える
4

ディレクトリの変更を防ぐには、次を使用します。

File root = new File("c:\\data");
FileSystemView fsv = new SingleRootFileSystemView( root );
JFileChooser chooser = new JFileChooser(fsv);

これを確認してください:http://tips4java.wordpress.com/2009/01/28/single-root-file-chooser/

ファイル名のパターンについては、Java の正規表現を使用できます。

于 2012-05-25T22:13:13.280 に答える