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

前回の構成
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(".");
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"テキストファイル(*.txt)", "txt");
chooser.setFileFilter(filter);
int retVal = chooser.showOpenDialog(this);
もうひとつimportを増やさなければなりません。最初の import が書いてある部分に1行加えます。
import javax.swing.filechooser.FileNameExtensionFilter;
「FileNameExtensionFilter というのは javax.swing.filechooser の中にあるからそこも参照してね」ということ
または、こう書いてもOKです。
import javax.swing.filechooser.*;
「javax.swing.filechooser の中のクラスも使うのでそこも参照してね」ということ
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) {
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 では 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ファイルを選んでも三択問題はできません
上記の .txt のフィルタをSanTakuF.javaに追加しなさい。