ファイルのタイプが .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に追加しなさい。