表示されるファイルのタイプが .txt だけだと選択しやすいので、これを実装します。

public class MyFileFilter extends javax.swing.filechooser.FileFilter {
String ext , msg;
public MyFileFilter(String ex , String ms) {
ext = ex;
msg = ms;
}
public boolean accept(java.io.File f) {
/* ディレクトリなら表示 */
if (f.isDirectory()){
return true;
}
/* 末尾がtxtだったら表示 */
return f.getName().endsWith(ext);
}
public String getDescription() { return msg; }
}
コンパイルだけします。実行できません。
前回の構成
public SanTakuF(){
setDefaultCloseOperation(EXIT_ON_CLOSE); //終了処理を追加
JFileChooser chooser = new JFileChooser("./");
int retVal = chooser.showOpenDialog(this);
今回の構成
public SanTakuF(){
setDefaultCloseOperation(EXIT_ON_CLOSE); //終了処理を追加
JFileChooser chooser = new JFileChooser("./");
MyFileFilter filter = new MyFileFilter(".txt" , "テキストファイル(*.txt)");
chooser.addChoosableFileFilter(filter);
int retVal = chooser.showOpenDialog(this);
これで、最初から、.txtの拡張子のファイルだけを表示します。

ファイルタイプの右の▼をクリックすることで、「全てのファイル」に戻すことも可能です。

SanTakuF.java では FileFilter をひとつだけ作って chooser に登録しています。
public SanTakuF(){
setDefaultCloseOperation(EXIT_ON_CLOSE); //終了処理を追加
JFileChooser chooser = new JFileChooser("./");
MyFileFilter filter = new MyFileFilter(".txt" , "テキストファイル(*.txt)");
chooser.addChoosableFileFilter(filter);
int retVal = chooser.showOpenDialog(this);
この部分を次のように変えた SanTakuM.java を作ってみましょう。
SanTakuM.java では FileFilter を3つ作って chooser に登録します。
public SanTakuM(){
setDefaultCloseOperation(EXIT_ON_CLOSE); //終了処理を追加
JFileChooser chooser = new JFileChooser("./");
MyFileFilter[] filter = {
new MyFileFilter(".java" , "Java ファイル(*.java)") ,
new MyFileFilter(".class" , "class ファイル(*.class)") ,
new MyFileFilter(".txt" , "テキストファイル(*.txt)")
};
for(int i = 0 ; i < filter.length ; i++){
chooser.addChoosableFileFilter(filter[i]);
}
int retVal = chooser.showOpenDialog(this);
これはやってみただけで、java,classファイルを選んでも三択問題はできません