JFileChooserは、ファイルを選択するダイアログ。
(ファイル選択でなく、) ドロップされたファイルを処理したい場合は、DropTargetクラスを使用。
|
HTMLファイルを読み込む為に選択するダイアログは、以下の通り。
import java.io.File; import javax.swing.JFileChooser;
public void openFile() {
JFileChooser fc = new JFileChooser();
fc.setDialogTitle("HTMLファイルを開く");
// fc.setDialogType(JFileChooser.OPEN_DIALOG);
fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
fc.setMultiSelectionEnabled(true);
fc.setFileFilter(new FileFilter() { //無名内部クラス使用
public boolean accept(File f) {
if (f.isDirectory()) return true; //ディレクトリは表示
//拡張子がhtml,htmのものだけ表示
String name = f.getName();
int n = name.lastIndexOf('.');
if (n > 0) {
String ext = name.substring(n);
return ext.equalsIgnoreCase(".html")
|| ext.equalsIgnoreCase(".htm");
}
return false;
}
public String getDescription() {
return "HTMLファイル(*.html, *.htm)";
}
});
int selected = fc.showOpenDialog(null);
if (selected == JFileChooser.APPROVE_OPTION) {
File[] fs = fc.getSelectedFiles();
for (int i = 0; i < fs.length; i++) {
File f = fs[i];
// fを使ってファイルを読み込む処理を実装する
}
}
}
この例では毎回JFileChooserのインスタンスを作り直しているが、作るのは一度だけにして、同じインスタンスに対してshowOpenDialog()のみを実行するようにすれば、以前開いた場所が保持されている。[2007-02-03]
| メソッド | 概要 | 値 | 備考 | 更新日 |
|---|---|---|---|---|
| setDialogTitle | ダイアログのタイトルを設定 | |||
| setDialogType | 何の為のダイアログかを指定 (showOpenDialog()やshowSaveDialog()を使う場合は不要) |
OPEN_DIALOG | 開く為のダイアログ | |
| SAVE_DIALOG | 保存する為のダイアログ | |||
| CUSTOM_DIALOG | 独自のダイアログ | 2007-02-03 | ||
| setFileSelectionMode | 選択可能な種類を指定 | FILES_ONLY | ファイルのみ選択可能 | |
| DIRECTORIES_ONLY | ディレクトリのみ選択可能 | |||
| FILES_AND_DIRECTORIES | ファイルもディレクトリも選択可能 | |||
| setMultiSelectionEnabled | 複数選択可能かどうかを指定 | |||
| setCurrentDirectory | デフォルトのディレクトリを指定 | ファイルを指定しても、そのディレクトリになる。 | 2007-02-03 | |
| setSelectedFile | デフォルトのファイル(単一)を指定 | このメソッドを使う場合、setCurrentDirectory()は不要 | 2007-02-03 | |
| setSelectedFiles | デフォルトのファイル(複数)を指定 | 2007-02-03 | ||
| setFileFilter | ダイアログに表示するファイルを絞る為のフィルターを指定 | フィルターは、FileFilterクラスを継承して自分で実装する
。 JDK1.6では、単純な拡張子指定用のクラスが用意された。 |
2009-09-19 | |
| setAcceptAllFileFilterUsed | 「全ファイル」のフィルターを表示するかどうかを指定 | 2007-02-03 | ||
| showOpenDialog | 読込用ダイアログを表示し、結果を取得 (内部でsetDialogType()使用) |
APPROVE_OPTION | ファイルが選択された | 2007-02-03 |
| CANCEL_OPTION | ダイアログがキャンセルされた | |||
| showSaveDialog | 保存用ダイアログを表示し、結果を取得 (内部でsetDialogType()使用) |
APPROVE_OPTION | ファイルが選択された | 2007-02-03 |
| CANCEL_OPTION | ダイアログがキャンセルされた | |||
| getSelectedFiles | 選択されたファイル名(複数)を取得 | |||
| getSelectedFile | 選択されたファイル名(単一)を取得 |
JDK1.6から、拡張子を指定する場合のFileFilterが用意されたらしい。[2009-09-19]
import javax.swing.filechooser.FileNameExtensionFilter;
fc.setFileFilter(new FileNameExtensionFilter("HTMLファイル(*.html, *.htm)", "html", "htm"));
コンストラクターの第1引数はdescription(説明)、第2引数以降は可変引数で、拡張子を列挙する。