JFileChooserの使い方
ボタンを押すと、オープンダイアログが現れ、ファイルを選ぶとその詳細が表示される。 |
ここでは、ウインドウの下部にあるボタンをクリックすると、オープンダイアログを開き、これで選択したファイル名と絶対パスを表示します。clickBtnメソッドを見ると、new JFileChooserでインスタンスを作成し、「showOpenDialog」というメソッドを呼び出しているのがわかりますね。これが、オープンダイアログを画面に表示するためのものです。同様に、保存ダイアログを呼び出す「showSaveDialog」というメソッドもあります。いずれも、ただメソッドを呼び出すだけで、ダイアログが現れます。
これらのメソッドでは、いずれも引数に「this」を渡します。これは、表示するダイアログが所属するフレームを指定するものです。この種のモーダル(処理が途中で中断されるタイプの)ダイアログというのは、あるウインドウ上に表示され、それが閉じるまで、そのウインドウは操作できなくなります。このため、「どのウインドウに属するか」は重要になるわけです。まぁ、通常は表示されているJFrameインスタンス(this)を指定すればよいでしょう。
これらのメソッドは、ダイアログが閉じられると、何らかの値(int値)が返されるようになっています。これによって、どういう形でダイアログが閉じられたかがわかります。ファイルが選択(あるいは入力)されてOKされた場合には、返値はJFileChooser.APPROVE_OPTIONとなりますので、メソッドの返値がこの値であった場合には、必要な処理を行うようにしておけばよいでしょう。
選択したファイルは、JFileChooserの「getSelectedFile」で得ることができます。これは、選択ファイルをjava.io.Fileのインスタンスとして返すものです。Fileインスタンスが得られれば、後はどうとでもなりますね。ここでは、getNameとgetAbsolutePathで、ファイル名と絶対パスを取り出してJLabelに表示させています。
この他、選択されたディレクトリは、「getCurrentDirectory」で得ることができます。これは、ダイアログが閉じられた際に選択されていたディレクトリをFileインスタンスとして返すものです。
複数ファイルへの対応は?
JFileChooserは、複数のファイルを選択することも可能です。この場合には、複数ファイルの選択を可能にする「setMultiSelectionEnabled」をtrueに設定してダイアログを呼び出します。また、選択したファイルは、「getSelectedFiles」メソッドで、Fileインスタンスの配列として取り出すことができます。
public void clickBtn(){
JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(true);
int result = chooser.showOpenDialog(this);
if (result == JFileChooser.APPROVE_OPTION){
File[] arr = chooser.getSelectedFiles();
String s = "";
for(File f: arr)
s += f.getName() + "";
label.setText(s + "");
}
}
clickBtnメソッドをこのように修正してみましょう。今度は、複数のファイルを選択することができます。ダイアログを閉じると、選択したファイル全てのファイル名が表示されます。